以下语句有错误,请帮助修复它。
long siz = dirinfo.EnumerateFiles().Sum(file => file.length);
"System.IO.DirectoryInfo"不包含 "枚举文件"和没有扩展方法"枚举文件"接受 可以找到类型为"System.IO.DirectoryInfo"的第一个参数(是 您缺少 using 指令或程序集引用?
是否需要任何名称空间?我已经把命名空间放在System.IO
.
正如你们所有人所说,我更改了代码并
static long dirsize(DirectoryInfo dirinfo,bool includesubdir) { siz += dirinfo.GetFiles("*", SearchOption.AllDirectory).总和(dire => dirsize(dire, true));
}
当我使用它时,它会给出一个错误,因为无法从文件信息转换为目录信息。
我的问题是我会通过将目录信息更改为文件信息来获得一个特定的目录大小吗? 可能吗...?请帮我解决它。提前谢谢。
在 4.0 之前的 .Net Framework 中,您可以使用
long siz = dirinfo.GetFiles().Sum(file => file.Length);
实际上,在您的情况下没有区别。因为无论如何都应该枚举所有文件来计算大小(枚举文件逐个返回文件,GetFiles 返回所有文件)。
我假设您使用的是低于 .NET 4 的框架版本。
DirectoryInfo.EnumerateFiles
是随 .NET 4 一起添加的。然后你可以改用DirectoryInfo.GetFiles
,它首先将所有内容加载到内存中,并且从 1.1 开始可用。
这里的另一种(未经测试的)方法:
http://www.codeproject.com/Articles/12782/File-System-Enumerator-using-lazy-matching
DirectoryInfo.EnumerateFiles()
方法随.NET 4.0一起提供。
您应该下载.NET Framework 4.0
版本。
尝试使用DirectoryInfo.GetFiles()
方法而不是 并且它自 .NET Framework 1.1 以来就存在。
返回当前目录中的文件列表。