.NET ez 2014-10-06
以往計算資料夾容量,需要使用迴圈計算檔案容量,然後在加起來,例如:
private static void CalculateDirectorySize(string DirRoute, ref long totalSize)
{
foreach (string Route in Directory.EnumerateDirectories(DirRoute)) CalculateDirectorySize(Route, ref totalSize);
foreach (FileInfo file in new DirectoryInfo(DirRoute).EnumerateFiles()) totalSize += file.Length;
}雖然可以計算,不過效率不太好,改用內建的 Scripting.FileSystemObject,速度會快上許多:
private static long CalculateDirectorySize(string DirRoute)
{
try
{
Type tp = Type.GetTypeFromProgID("Scripting.FileSystemObject");
object fso = Activator.CreateInstance(tp);
object fd = tp.InvokeMember("GetFolder", BindingFlags.InvokeMethod, null, fso, new object[] { DirRoute });
long ret = Convert.ToInt64(tp.InvokeMember("Size", BindingFlags.GetProperty, null, fd, null));
Marshal.ReleaseComObject(fso);
return ret;
}
catch
{
return 0;
}
}標籤: .NET
本文章網址:
https://www.ez2o.com/Blog/Post/csharp-Calculate-Directory-Size
https://www.ez2o.com/Blog/Post/469
https://www.ez2o.com/Blog/Post/csharp-Calculate-Directory-Size
https://www.ez2o.com/Blog/Post/469
