Frage

Ich bin Umwandlung eines alten app, die Ordnergrößen auf einer täglichen Basis aufzeichnet. Der Legacy-App nutzt die Scripting.FileSystemObject Bibliothek:

Set fso = CreateObject("Scripting.FileSystemObject")
Set folderObject = fso.GetFolder(folder)
size = folderObject.Size

Es gibt keine gleichwertigen Mechanismus auf den System.IO.Directory und System.IO.DirectoryInfo Klassen.

das gleiche Ergebnis in .NET zu erreichen, muss ich wirklich rekursiv die gesamte Ordnerstruktur zu Fuß eine laufende Summe der Dateigrößen zu halten?

Update: @ Jonathon / Ed - dank .... wie ich dachte. Ich denke, ich werde nur die Scripting.FileSystemObject COM-Bibliothek verweisen. Funktioniert genauso gut auch wenn die .NET Reinheit meiner App zu brechen. Es ist für eine interne Berichterstattung app, damit es nicht so eine große Sache ist.

War es hilfreich?

Lösung

Ich denke, dass Sie die Antwort schon kennen; Sie müssen alle Dateien in dem Verzeichnis addieren (sowie dessen Unterverzeichnisse.) Ich weiß nicht, von jeder Funktion für diese gebaut, aber hey, ich weiß nicht alles (nicht einmal in der Nähe).

Andere Tipps

Leider ja ... wer weiß, warum.

public static long DirSize(DirectoryInfo d) 
{    
    long Size = 0;    
    // Add file sizes.
    FileInfo[] fis = d.GetFiles();
    foreach (FileInfo fi in fis) 
    {      
        Size += fi.Length;    
    }
    // Add subdirectory sizes.
    DirectoryInfo[] dis = d.GetDirectories();
    foreach (DirectoryInfo di in dis) 
    {
        Size += DirSize(di);   
    }
    return(Size);  
}

Wie zu sehen unter:

http://msdn.microsoft.com/en -US / library / system.io.directory.aspx

Mads Kristensen geschrieben über diese eine Weile zurück ...

private double size = 0;

private double GetDirectorySize(string directory)
{
    foreach (string dir in Directory.GetDirectories(directory))
    {
        GetDirectorySize(dir);
    }

    foreach (FileInfo file in new DirectoryInfo(directory).GetFiles())
    {
        size += file.Length;
    }

    return size;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top