如何在.net中计算/确定文件夹大小
本文关键字:文件夹 计算 net | 更新日期: 2023-09-27 18:05:50
我在Winform中创建一个应用程序,它需要能够计算文件夹的大小。
谁能给我指点一下怎么做?
谢谢
我使用以下扩展方法来做到这一点:
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;
}