Dupliquer possible:
Comment obtenir une taille de répertoire (fichiers dans le répertoire) en C #?
Dans vbscript, il est extrêmement simple d’obtenir la taille du dossier en Go ou en Mo:
Set oFSO = CreateObject("Scripting.FileSystemObject") Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024) WScript.Echo fSize
En C #, avec toutes mes recherches, je ne trouve que de longues recherches récursives et compliquées pour chaque taille de fichier dans tous les sous-dossiers, puis les additionne à la fin.
N’y a-t-il pas d’autre moyen?
Que dis-tu de ça:
private static long GetDirectorySize(ssortingng folderPath) { DirectoryInfo di = new DirectoryInfo(folderPath); return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length); }
d’ ici .
Cela vous donnera la taille en octets; vous devrez “embellir” cela en Go ou en MB.
REMARQUE: cela ne fonctionne que dans .NET 4+.
EDIT: Changé la recherche générique de "*.*"
"*"
selon les commentaires dans le fil auquel j’ai lié. Cela devrait étendre sa facilité d’utilisation à d’autres systèmes d’exploitation (si vous utilisez Mono, par exemple).
Vous pouvez également utiliser la récursivité pour obtenir tous les sous-répertoires et additionner les tailles:
public static long GetDirectorySize(ssortingng path){ ssortingng[] files = Directory.GetFiles(path); ssortingng[] subdirectories = Directory.GetDirectories(path); long size = files.Sum(x => new FileInfo(x).Length); foreach(ssortingng s in subdirectories) size += GetDirectorySize(s); return size; }