可能重复:
我如何在C#中的目录大小(目录中的文件)?
在VBScript中,这是令人难以置信的简单,以获得文件夹大小GB或MB:
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024)
WScript.Echo fSize
在C#中,用我所有的搜索,所有我可以拿出很长的,令人费解,在所有子文件夹中的所有文件大小递归搜索,然后在末尾添加他们都放弃了。
难道就没有其他办法吗?
这个怎么样:
private static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
从这里 。
这会给你的字节大小; 你将不得不“美化”这到绿带或MBS。
注意:这只在.NET 4+作品。
编辑:从改变了通配符搜索"*.*"
到"*"
为每线程中评论,这是我的联系。 这应该其可用性扩展到其他操作系统(如果使用单声道,例如)。
您还可以使用递归来获取所有子目录和总结尺寸:
public static long GetDirectorySize(string path){
string[] files = Directory.GetFiles(path);
string[] subdirectories = Directory.GetDirectories(path);
long size = files.Sum(x => new FileInfo(x).Length);
foreach(string s in subdirectories)
size += GetDirectorySize(s);
return size;
}