Ich habe die folgende Routine geschrieben, um ein Verzeichnis manuell zu durchlaufen und seine Größe in C # /. NET zu berechnen:
protected static float CalculateFolderSize(string folder)
{
float folderSize = 0.0f;
try
{
//Checks if the path is valid or not
if (!Directory.Exists(folder))
return folderSize;
else
{
try
{
foreach (string file in Directory.GetFiles(folder))
{
if (File.Exists(file))
{
FileInfo finfo = new FileInfo(file);
folderSize += finfo.Length;
}
}
foreach (string dir in Directory.GetDirectories(folder))
folderSize += CalculateFolderSize(dir);
}
catch (NotSupportedException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
}
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
return folderSize;
}
Ich habe eine Anwendung, die diese Routine wiederholt für eine große Anzahl von Ordnern ausführt. Ich frage mich, ob es eine effizientere Möglichkeit gibt, die Größe eines Ordners mit .NET zu berechnen. Ich habe nichts Spezielles im Framework gesehen. Sollte ich P / Invoke und eine Win32-API verwenden? Wie lässt sich die Größe eines Ordners in .NET am effizientesten berechnen?
