ディレクトリサイズをバイト単位で取得するには、次の方法があります。
public static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
次の機能を追加したいと思います。ディレクトリのサイズが 500 MB (または任意の入力数値) より大きい場合は、-1 を返します。
return を次のように変更することで、簡単に実現できます。
var size = di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length)
return (size <= 500*1024) ? size : -1;
これは、.xml 内のすべてのファイルを処理するため、エレガントでも効率的でもありません.Sum(fi => fi.Length)
。
呼び出し元がしきい値を追加できる機能的に追加するエレガントな方法はありますか?
注: 100,000 個のファイルを含むフォルダーがあり、最初のフォルダーが 500 MB を超える場合、すべてのファイルを反復処理しないようにしています。反復処理を続行しても意味がありません。