C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でフォルダのサイズを計算する方法をわかりやすく解説

C#で特定のフォルダのサイズ(容量)を計算したい場合、DirectoryInfoクラスEnumerateFilesメソッドを組み合わせるのが基本的なアプローチです。この記事では、フォルダ内のファイルサイズ合計を取得する方法から、サブフォルダまで含めた計算方法、さらに覚えておくと便利なディレクトリ操作メソッドまで詳しく解説します。

フォルダサイズを計算する基本のコード

まず、計算対象となるフォルダをDirectoryInfoクラスで指定します。ここでは例として「D:/new」フォルダを使用します。

DirectoryInfo info = new DirectoryInfo(@"D:/new");

次に、EnumerateFilesメソッドでフォルダ内のファイルを列挙し、LINQのSumメソッドを使って各ファイルのサイズ(Lengthプロパティ)を合計します。

long totalSize = info.EnumerateFiles().Sum(file => file.Length);

file.Lengthはバイト単位で返されるため、必要に応じてKBやMBに変換して表示すると分かりやすくなります。

サブフォルダも含めてサイズを計算するには

上記のコードは直下のファイルのみを対象とします。サブディレクトリを取得したい場合はEnumerateDirectoriesメソッドを使用します。

info.EnumerateDirectories()

また、サブフォルダ内のファイルまで再帰的に含めて合計サイズを求めたい場合は、SearchOption.AllDirectoriesを指定すると簡単です。

long totalSize = info.EnumerateFiles("*", SearchOption.AllDirectories)
                     .Sum(file => file.Length);

これにより、指定フォルダ以下のすべてのファイルサイズを一度に集計できます。

覚えておきたいディレクトリ操作メソッド一覧

C#ではフォルダサイズの計算以外にも、さまざまなディレクトリ操作を行えます。よく使われる主なメソッドを以下にまとめました。

メソッド説明
CreateDirectory(String)指定したパスに、まだ存在しない場合のみすべてのディレクトリとサブディレクトリを作成します。
CreateDirectory(String, DirectorySecurity)指定されたWindowsセキュリティ設定を適用しながら、指定したパスにすべてのディレクトリを作成します。
Delete(String)指定したパスから空のディレクトリを削除します。
Delete(String, Boolean)指定したディレクトリを削除します。第2引数がtrueの場合、サブディレクトリとファイルもまとめて削除されます。
EnumerateDirectories(String)指定したパス内のディレクトリ名の列挙可能なコレクションを返します。

まとめ

C#でフォルダサイズを計算するには、DirectoryInfoクラスでフォルダを指定し、EnumerateFilesメソッドとSumメソッドを組み合わせるのが最もシンプルです。サブフォルダまで含めたい場合はSearchOption.AllDirectoriesを活用しましょう。あわせてCreateDirectoryやDeleteなどのディレクトリ操作メソッドを理解しておくと、ファイルシステムを扱うアプリケーション開発がより効率的になります。

  1. Pythonでディレクトリのアクセス権限を確認する方法【os.access()の使い方】

    os.access()でディレクトリの権限を確認する Pythonでディレクトリの読み取り・書き込み・実行権限を調べるには、標準ライブラリのos.access(path, mode)関数を使用します。第1引数に対象のパス、第2引数に確認したい権限モードを指定すると、権限があればTrue、なければFalseが返されます。 >>> import os >>> os.access(my_folder, os.R_OK) # 読み取り権限の確認 True >>> os.access(my_folder, os.W_OK) # 書き込み権限の

  2. Pythonでディレクトリを再帰的に削除する方法|shutil.rmtreeの使い方を解説

    Pythonでファイルやサブフォルダを含むフォルダ(ディレクトリツリー)を丸ごと削除したい場合、標準ライブラリの shutil モジュールを使うのが最も簡単な方法です。shutil.rmtree() の基本的な使い方指定したフォルダと、その中にあるすべてのファイル・サブフォルダを一括で削除するには、以下のように記述します。>>> import shutil>>> shutil.rmtree(my_folder)注意点shutil.rmtree() による削除は元に戻せません。ゴミ箱へ移動されるのではなく、完全に削除されるため、実行前に削除対象のパスが正しいか