我在Winform中创建应用程序,除此之外还需要能够计算文件夹的大小。
有人能指点我怎么做吗?
感谢
答案 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;
}