問題は、ごみ箱またはドキュメントと設定フォルダ/ファイルの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コードをいくつか見つけました。それも同じようにエラーになります。
よろしくお願いします。