我正在寻找一种更快的方法来使用 C# 获取包含超过 75,000 个文件的子文件夹中所有文件的总大小。以下在我的带有 SSD 驱动器的笔记本电脑上大约需要 8 秒。
FileInfo[] files;
long fileMBs;
files = di.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo fi in files)
{
fileMBs += fi.Length;
}
我研究了使用 Win32 CreateFile 和 GetFileSize,但找不到有关如何从 C# 调用它们的示例。如果给每个文件调用完整路径,这会更快吗?如果是这样,我应该在 C# 中使用它们吗?有没有更快的方法?
您可以使用 Linq:
var total = di.GetFiles("*.*", SearchOption.AllDirectories).Sum(f => f.Length);
在total变量中,您保存每个文件所有大小的总和,获得全局总计。
要使用 Linq,您必须输入以下内容:
using System.Linq;