[解決済み] .NETでディレクトリのサイズを計算する最も良い方法は何ですか?
2023-06-12 20:41:57
質問
私は、C#/.NETでディレクトリを手動でトラバースし、そのサイズを計算するために、次のルーチンを書きました。
protected static float CalculateFolderSize(string folder)
{
float folderSize = 0.0f;
try
{
//Checks if the path is valid or not
if (!Directory.Exists(folder))
return folderSize;
else
{
try
{
foreach (string file in Directory.GetFiles(folder))
{
if (File.Exists(file))
{
FileInfo finfo = new FileInfo(file);
folderSize += finfo.Length;
}
}
foreach (string dir in Directory.GetDirectories(folder))
folderSize += CalculateFolderSize(dir);
}
catch (NotSupportedException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
}
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
}
return folderSize;
}
大量のフォルダに対して、このルーチンを繰り返し実行しているアプリケーションがあります。 .NETでフォルダのサイズを計算する、より効率的な方法はないでしょうか? フレームワークでは特に何も見当たりませんでした。 P/InvokeとWin32 APIを使用すべきでしょうか? .NETでフォルダーのサイズを計算する最も効率的な方法は何ですか?
どのように解決するのですか?
ディレクトリによって消費されるスペースを計算する Win32 API があるとは思えませんが、これについては訂正させていただきます。もしあれば、エクスプローラーがそれを使用すると思います。エクスプローラーで大きなディレクトリのプロパティを取得する場合、フォルダーのサイズを表示するのにかかる時間は、それが含むファイル/サブディレクトリの数に比例します。
あなたのルーチンは、かなりきちんとした & シンプルに見えます。ディスク上で消費される実際のスペースではなく、ファイルの長さの合計を計算していることに留意してください。クラスタやファイル ストリームなどの末尾にある無駄なスペースによって消費されるスペースは無視されます。
関連
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] .NETで文字列を改行で分割する最も簡単な方法とは?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] C#で文字を繰り返し表示する最適な方法
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] C#の文字列の前にある@は何ですか?
-
[解決済み] アプリケーションフォルダのパスを取得する最適な方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】「namespace」なのに「type」のように使われる。