C# 获取包含 75,00 个文件的目录总大小的最快方法

问题描述 投票:0回答:1

我正在寻找一种更快的方法来使用 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# 中使用它们吗?有没有更快的方法?

c# winapi directory pinvoke filesize
1个回答
0
投票

您可以使用 Linq:

var total = di.GetFiles("*.*", SearchOption.AllDirectories).Sum(f => f.Length);

在total变量中,您保存每个文件所有大小的总和,获得全局总计。

要使用 Linq,您必须输入以下内容:

using System.Linq;
© www.soinside.com 2019 - 2024. All rights reserved.