ディレクトリとその中のすべてのファイルのサイズをカウントする簡単な方法があります。コードは次のとおりです。
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:\ で使用すると、「パス 'C:\Documents and Settings' へのアクセスが拒否されました」というメッセージとともに「UnauthorizedAccessException」が発生します。あれは:
DirectoryInfo di = new DirectoryInfo(Path.GetPathRoot(Environment.SystemDirectory));
long ds = DirectorySize.GetDirectorySize(di);
Visual Studio を管理者として実行しようとしました。すべて同じです。なんで?