Rozmiar folderu

0

Napisałem program i nie wiem gdzie zrobiłem pomyłkę polega to na tym że wyświetla rozmiar folderu nie tak jak powinno
być. W 1 ReadLine wyświetla mniejszą wartość jak w 2 ReadLine a w tym 2 pokazuje dobra wartość ale jak skasuje
komendy do obliczania 1 ReadLine to znowu wynik pokazuje zły. Gdzie zrobiłem błąd???

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
namespace prog
{
    class Program
    {
    static void Main()
    {
    Console.WriteLine("Rozmiar folderu wynosi:");
    string[] fol = Directory.GetDirectories(@"D:\doSkopiowania");
     Array.Sort(fol);
     dane.mb = 0;
     rozmiar.Foldery(fol);
     Console.WriteLine(dane.mb);
     rozmiar.pfol(@"D:\doSkopiowania");
     Console.WriteLine(dane.mb);
    }
    }
  public class rozmiar
  {
        static public void Foldery(string[] folder)
        {
            foreach (string path in folder)
            {
                pfol(path);
            }
        }
        static public void pfol(string p)
        {
            string[] a = Directory.GetFiles(p, "*.*");
            long b = 0;
            foreach (string name in a)
            {
                FileInfo info = new FileInfo(name);
                b += info.Length;
            }
            dane.mb += b;
        }
   }
   public class dane
   {
   public static long mb;
   }
}
0

teoria:
rozmiar folderu = rozmiar plików w folderze + rozmiar podfolderów

praktyka:
twoja jest błędna, bo:

  1. rozmiar.Foldery(fol); policzy tylko rozmiar podfolderów
  2. rozmiar.pfol(@"D:\doSkopiowania"); policzy tylko rozmiar plików w podanym folderze

z uwagi na to że wpisujesz wynik do zmiennej statycznej (swoją drogą jakaś totalna głupota) - sumuszej, to wywołanie i 1) i 2) powoduje, że dostajesz poprawny wynik

generalnie ten kod jest do d..y

0

To jak zrobić żeby pokazywało rozmiar folderu i podfolderów???

0

metoda powinna jako parametr przyjąć nazwę katalogu, a zwrócić rozmiar w bajach, czyli long FolderSize(string folderPath)
w metodzie najpierw liczysz rozmiar plików z danego folderu, a następnie wykonujesz to samo dla wszystkich podfolderów i dla ich podfolderów itd. i na koniec zwracasz sumę

0

Właśnie próbowałem to zrobić tutaj i wyszło do d..y.

1 użytkowników online, w tym zalogowanych: 0, gości: 1