디렉토리와 그 안에있는 모든 파일의 크기를 계산하는 간단한 방법이 있습니다.디렉토리의 크기를 계산하는 동안 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;
}
}
}
I C 드라이브에 사용 : 다음 코드는 내가 메시지와 함께 "UnauthorizedAccessException"를 얻을 \ "경로에 대한 액세스가 'C : \ 문서 및 설정'. 거부" 즉 :
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 블록을 사용하려고했지만 잘못된 총 크기를 얻습니다. –