如何在C#中获取文件夹大小?

Nat*_*kle 5 c# asp.net directory size

可能重复:
如何在C#中获取目录大小(目录中的文件)?

在vbscript中,获取GB或MB的文件夹大小非常简单:

Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024)
WScript.Echo fSize
Run Code Online (Sandbox Code Playgroud)

在C#中,通过我的所有搜索,我可以想到的是对所有子文件夹中的每个文件大小进行冗长,复杂,递归的搜索,然后在最后添加它们.

没有其他办法吗?

Cᴏʀ*_*ᴏʀʏ 22

这个怎么样:

private static long GetDirectorySize(string folderPath)
{
    DirectoryInfo di = new DirectoryInfo(folderPath);
    return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
Run Code Online (Sandbox Code Playgroud)

这里开始.

这将为您提供以字节为单位的大小; 你将不得不将其"美化"为GB或MB.

注意:这仅适用于.NET 4+.

编辑:从改变了通配符搜索"*.*""*"按在线程的意见,而我联系.这应该将其可用性扩展到其他操作系统(例如,如果使用Mono).

  • @Spacemancraig:不,`fi`应该是正确的,因为我们命名由`di.EnumerateFiles()`枚举的每个`FileInfo`对象. (3认同)

归档时间:

查看次数:

12616 次

最近记录:

10 年,11 月 前