Comment obtenir la taille de dossier en C #?

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; }