我已经编写了一个递归函数来计算文件夹路径的目录大小。它可以工作,但是随着我需要搜索的目录数量和每个相应文件夹中文件的数量增长,这是一种非常缓慢和低效的方法。
static string GetDirectorySize(string parentDir)
{
long totalFileSize = 0;
string[] dirFiles = Directory.GetFiles(parentDir, "*.*",
System.IO.SearchOption.AllDirectories);
foreach (string fileName in dirFiles)
{
// Use FileInfo to get length of each file.
FileInfo info = new FileInfo(fileName);
totalFileSize = totalFileSize + info.Length;
}
return String.Format(new FileSizeFormatProvider(), "{0:fs}", totalFileSize);
}
这将在所有子目录中搜索参数路径,因此
dirFiles
数组会变得非常大。有更好的方法来实现这个吗?我已经搜索了一下,但还没有找到合适的方法。
我想到的另一个方法是将结果放入缓存中,当再次调用函数时,尝试查找差异,并仅重新搜索已更改的文件夹。不确定这是否可行...