问题是回收站上的System.UnauthorizedAccessException或文档和设置文件夹/文件。(VS2010 .NET 4.0 C#)
以下LINQ代码用于查询目录大小。我试过GetFiles和EnumerateFiles。我绝对是以管理员的身份运行。在注释的代码中,您可以看到我尝试从另一个Stack post中测试一些属性,但没有成功。
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方法,在这里我不需要手动循环和测试每个文件夹/dir。我找到了一些类似操作的副本的MS代码。它也犯了同样的错误。
我提前感谢你,
发布于 2012-07-16 20:29:11
try/catch来拯救,如下列条款所示。还有替代方案。
发布于 2012-07-16 20:30:23
堆栈溢出中还有对此的其他引用;但您可能需要为应用程序本身定义权限。定烫
还有一个小块C:\Users是一个连接;C#: Access to path <'filepath'> is denied
https://stackoverflow.com/questions/11511881
复制相似问题