Seveda moraš uvesti System.IO imenski prostor
Prva:
javni statični long GetDirectoryLength(string dirPath)
{ Ugotovimo, ali določena pot obstaja, in izstopimo, če ne obstaja če (! Directory.Exists(dirPath)) vrni 0; dolgi len = 0;
//定义一个DirectoryInfo对象 DirectoryInfo di = novi DirectoryInfo(dirPath);
Uporabite metodo GetFiles, da dobite velikost vseh datotek v di mapi foreach (FileInfo fi in di.GetFiles())
{ len += fi. Dolžina;
}
Zberi vse mape v di in jih shrani v novo polje objektov za rekurzijo DirectoryInfo[] dis = di.GetDirectories(); če (dis. Dolžina > 0)
{ za (int i = 0; Jaz < to. Dolžina; i++)
{ len += GetDirectoryLength(dis. FullName);
}
} vrni len;
}
Druga
Uporablja tudi idejo rekurzije, vendar jo ocenjuje metoda Exits razreda File
//所给路径中所对应的是否为文件
public static long FileSize(string filePath)
{ dolga temperatura = 0;
//判断当前路径所指向的是否为文件 if (File.Exists(filePath) == false)
{ string[] str1 = Directory.GetFileSystemEntries(filePath); foreach (niz s1 v str1)
{ temp += FileSize(s1);
}
} else
{
Določite objekt FileInfo, ki ga poveže z usmeritvijo datoteke, na katero kaže filePath,
//以获取其大小 FileInfoFileInfo = novi FileInfo(filePath); vrni datotekoInfo.Length;
} povratna temperatura;
}
Pravzaprav je ideja brisanja mape enaka kot ta, nastavitev je veliko preprostejša – preprosto presodite, ali gre za datoteko ali mapo, če je datoteka, jo izbrišite. Če gre za mapo, je rekurzivna |