问题是System.UnauthorizedAccessException 回收站或文档和设置文件夹/文件。 (VS2010 .NET 4.0 C#)System.UnauthorizedAccessException C#winforms
以下LINQ代码查询目录大小。我试过GetFiles和EnumerateFiles。我肯定以管理员身份运行。在评论代码中,您可以看到我尝试从另一个Stack帖子中测试某些属性,但未成功。
DirectorySize(new DirectoryInfo(@"C:\\"),true);
public static long DirectorySize(DirectoryInfo dInfo, bool includeSubDir)
{
// Enumerate all the files
long totalSize = dInfo.EnumerateFiles().Sum(file => file.Length);
//.Where(d => (d.Attributes & FileAttributes.ReparsePoint) == 0 && (d.Attributes & FileAttributes.System) == 0)
//.Sum(file => file.Length);
if (includeSubDir) // Subdirs?
{
// Enumerate all sub-directories
totalSize += dInfo.EnumerateDirectories().Sum(dir => DirectorySize(dir, true));
//.Where(d => (d.Attributes & FileAttributes.ReparsePoint) == 0 && (d.Attributes & FileAttributes.System) == 0)
//.Sum(dir => DirectorySize(dir, true));
}
return totalSize;
}
我想要一个简洁的LINQ方法,我不必手动循环和测试每个文件夹/目录。我发现了一些类似操作的重复的MS代码。它也错了。
我在此先感谢,
我认为你需要吞下药丸并尝试/发现异常。 http://stackoverflow.com/a/5957525/284240 – 2012-07-16 20:37:32
这与Winforms无关 – IanNorton 2012-07-16 20:59:40
提到winforms的原因是建立环境并从讨论中消除通常的asp.net/iIS环境。 – 2012-07-17 14:49:19