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

本文关键字:文件夹 计算 net | 更新日期: 2023-09-27 18:05:50

我在Winform中创建一个应用程序,它需要能够计算文件夹的大小。

谁能给我指点一下怎么做?

谢谢

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

我使用以下扩展方法来做到这一点:

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

您需要递归地枚举文件夹中的文件并将文件大小相加。请记住,要包含大小正确的系统文件和隐藏文件。

下面是一个简单的版本:

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

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

您需要从目录(包括子目录)中获取所有文件,并在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;
}