我有一个简单的方法来计算目录及其中的所有文件的大小。下面是代码:在计算目录大小的同时获取UnauthorizedAccessException
using System;
using System.IO;
namespace MyProject.Libs
{
public sealed class DirectorySize
{
public static long GetDirectorySize(DirectoryInfo dir)
{
long total = 0;
FileInfo[] fileInfos = dir.GetFiles();
foreach (FileInfo fileInfo in fileInfos)
{
total += fileInfo.Length;
}
DirectoryInfo[] dirInfos = dir.GetDirectories();
foreach (DirectoryInfo dirInfo in dirInfos)
{
total += DirectorySize.GetDirectorySize(dirInfo);
}
return total;
}
}
}
当我使用它在驱动器C:\我得到的出现“UnauthorizedAccessException”有消息“访问路径‘C:\ Documents和Settings’被拒绝。”那就是:
DirectoryInfo di = new DirectoryInfo(Path.GetPathRoot(Environment.SystemDirectory));
long ds = DirectorySize.GetDirectorySize(di);
试图以管理员身份运行Visual Studio。全部都一样。为什么?
自Vista以来,C:\ Documents and Settings文件夹被禁用以查看它。尝试使用C:\ Users代替:) –
你在哪里得到异常?试图在一个try catch语句中包装DirectioryInfo? – eandersson
我在'FileInfo [] fileInfos = dir.GetFiles();'行得到异常。另外,我使用'Environment.SystemDirectory'作为起点,因此我无法控制找到哪些目录。我试图使用try/catch块,但后来我得到错误的总大小。 –