我该如何在C#中文件夹大小? [重复](How do I Get Folder Size in

2019-07-31 05:28发布

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

在VBScript中,这是令人难以置信的简单,以获得文件夹大小GB或MB:

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

在C#中,用我所有的搜索,所有我可以拿出很长的,令人费解,在所有子文件夹中的所有文件大小递归搜索,然后在末尾添加他们都放弃了。

难道就没有其他办法吗?

Answer 1:

这个怎么样:

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

从这里 。

这会给你的字节大小; 你将不得不“美化”这到绿带或MBS。

注意:这只在.NET 4+作品。

编辑:从改变了通配符搜索"*.*""*"为每线程中评论,这是我的联系。 这应该其可用性扩展到其他操作系统(如果使用单声道,例如)。



Answer 2:

您还可以使用递归来获取所有子目录和总结尺寸:

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;
}


文章来源: How do I Get Folder Size in C#? [duplicate]