c# - 如何在 C# 中获取目录大小(目录中的文件)?

标签 c# asp.net winforms .net

我希望能够使用 C# 获取其中一个本地目录的大小。我试图避免以下(伪类代码),尽管在最坏的情况下我将不得不解决这个问题:

    int GetSize(Directory)
    {
        int Size = 0;

        foreach ( File in Directory )
        {
            FileInfo fInfo of File;
            Size += fInfo.Size;
        }

        foreach ( SubDirectory in Directory )
        {
            Size += GetSize(SubDirectory);
        }
        return Size;
    }

基本上,是否有可用的 Walk() 以便我可以遍历目录树?这将节省遍历每个子目录的递归。

最佳答案

在 .net 4.0 中获取文件夹大小的一种非常简洁的方法如下。它仍然受到必须递归遍历所有文件的限制,但它不会加载潜在的巨大文件名数组,而且它只有两行代码。确保使用命名空间 System.IOSystem.Linq

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

关于c# - 如何在 C# 中获取目录大小(目录中的文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118568/

相关文章:

c# - 数据库规范化和重复值

C# WinForms - 自动添加两个文本框

c# - ASP.NET Web API session 数据

c# - 如何在屏幕上移动一个位图对象,并让多个对象使用同一个位图

C#循环填充多个DataGridView

c# - 像 Stack Overflow 一样格式化数字(用 K 后缀四舍五入到千位)

c# - .Net 运行时编译器支持 C# 3.0 吗?

c# - 分割字符串时索引超出范围异常

包含文件之间的 Javascript 事件委托(delegate)

c# - 如何使 ListView-Control 表现得像 ListBox-Control?