我希望能够使用 C# 获取其中一个本地目录的大小。我试图避免以下(伪类代码),尽管在最坏的情况下我将不得不解决这个问题:
int GetSize(Directory)
{
int Size = 0;
foreach ( File in Directory )
{
FileInfo fInfo of File;
Size += fInfo.Size;
}
foreach ( SubDirectory in Directory )
{
Size += GetSize(SubDirectory);
}
return Size;
}
基本上,是否有可用的 Walk() 以便我可以遍历目录树?这将节省遍历每个子目录的递归。
最佳答案
在 .net 4.0 中获取文件夹大小的一种非常简洁的方法如下。它仍然受到必须递归遍历所有文件的限制,但它不会加载潜在的巨大文件名数组,而且它只有两行代码。确保使用命名空间 System.IO
和 System.Linq
。
private static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*.*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
关于c# - 如何在 C# 中获取目录大小(目录中的文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118568/