如何在.NET中计算/确定文件夹大小?

时间:2011-08-16 17:32:15

标签: c# .net

我在Winform中创建应用程序,除此之外还需要能够计算文件夹的大小。

有人能指点我怎么做吗?

感谢

3 个答案:

答案 0 :(得分:15)

我使用以下扩展方法来执行此操作:

    public static long Size(this DirectoryInfo Directory, bool Recursive = false)
    {
        if (Directory == null)
            throw new ArgumentNullException("Directory");
        return Directory.EnumerateFiles("*", Recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly).Sum(x => x.Length);
    }

答案 1 :(得分:2)

您需要以递归方式枚举文件夹中的文件并对文件大小求和。请记住包含正确大小的系统和隐藏文件。

这是一个简单的版本:

long GetFolderSize(string path)
{
    DirectoryInfo d = new DirectoryInfo(path);
    var files = d.GetFiles("*", SearchOption.AllDirectories);
    return files.Sum(fi => fi.Length);
}

请记住,文件可能占用磁盘上的空间而不是长度,因为文件总是占用文件系统上的整个块(如果对您的应用程序很重要)。

答案 2 :(得分:2)

您需要从目录(包括子目录)获取所有文件,并在sum循环中获取其大小。例如:

static long GetDirectorySize(string path)
{
    string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);

    long size = 0;
    foreach (string name in files)
    {
        FileInfo info = new FileInfo(name);
        size += info.Length;
    }

    return size;
}