2

问题是回收站文档和设置文件夹/文件上的 System.UnauthorizedAccessException。(VS2010 .NET 4.0 C#)

以下 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 代码。它的错误也是一样的。

预先感谢您,

4

2 回答 2

1

Stack Overflow 中还有其他对此的引用;但您可能需要为您的应用程序本身定义权限。 设置权限

还有这个小块 [ C:\Users is a JUNCTION]; C#:访问路径 <'filepath'> 被拒绝

于 2012-07-16T20:30:23.030 回答
0

try/catch如以下文章所示进行救援。还有替代品

于 2012-07-16T20:29:11.447 回答