我编写了以下例程来手动遍历一个目录,并在C#/.NET中计算它的大小:
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;
}
我有一个应用程序正在为大量文件夹重复运行此例程。我想知道是否有更有效的方式来计算与.NET文件夹的大小?我没有看到框架中的任何具体内容。我应该使用P / Invoke还是一个Win32 API?.NET中计算文件夹大小的最有效方法是什么?
发布于 2018-03-23 14:05:24
不,这看起来像是计算目录大小的推荐方式,相关方法如下:
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;
}
你会用root来调用:
Console.WriteLine("The size is {0} bytes.", DirSize(new DirectoryInfo(targetFolder));
在哪里targetFolder
计算文件夹大小。
https://stackoverflow.com/questions/-100007750
复制相似问题