ディレクトリ内にあるファイルの一覧を取得する [C#]

C#でディレクトリ(フォルダー)の中にあるファイルの一覧を取得する方法について紹介します。
ディレクトリ内のファイルの一覧を取得するには、System.IO名前空間のDirectoryInfoクラスのGetFilesメソッドや、DirectoryクラスのGetFiles静的メソッドなどを使用します。

DirectoryInfoクラスのGetFilesメソッドで取得

DirectoryInfoクラスのGetFilesメソッドの構文は次のようになります。

引数を取らないGetFilesメソッドでは、DirectoryInfoオブジェクトのディレクトリ内のすべてのファイルを取得できます。

引数1つ(searchPattern)を取るGetFilesメソッドでは、検索するパターンを指定してファイルの一覧を取得できます。
検索するパターンにはリテラル文字とワイルドカード文字の「*」と「?」が指定できます。指定した位置に0個以上の文字列が含まれているかどうかを示す場合は「*」を、指定した位置に0個または1個の文字列が含まれているかどうかを示す場合は「?」を指定します。例えばファイル名が「あ」で始まり「ん」で終わるファイルを検索する場合は「あ*ん」を指定します。「a」と「b」の間に任意の1文字を含むファイル名であれば「a?b」と指定します。

引数2つ(searchPatternとsearchOption)を取るGetFilesメソッドでは、検索するパターンと検索対象をDirectoryInfoオブジェクトのディレクトリの直下のみにするか、すべてのサブディレクトリを含めるかを指定してファイルの一覧を取得できます。サブディレクトリを含めるかどうかはSystem.IO.SearchOption列挙型で指定します。System.IO.SearchOption列挙型には「TopDirectoryOnly」と「AllFiles」があり、「TopDirectoryOnly」を指定するとサブディレクトリを含まずファイルの一覧を取得し、「AllFiles」を指定するとすべてのサブディレクトリを検索対象として含んだ結果のファイルの一覧を返します。

DirectoryInfo.GetFilesメソッドの使用例

以下にGetFilesメソッドを使用してファイルの一覧を取得する例を示します。

引数を2つ指定するGetFilesメソッドですべてのディレクトリを対象にする場合は、検索パターン(searchPattern)に「*」を指定します。

DirectoryクラスのGetFiles静的メソッドで取得

DirectoryクラスのGetFiles静的メソッドの構文は次のようになります。

DirectoryクラスのGetFiles静的メソッドには検索対象とするディレクトリを第1引数に指定します。引数を2つ取るものと引数を3つ取るものは、DirectoryInfoクラスのGetFilesと同様に、検索パターンとすべてのサブディレクトリを含めるかどうかを指定します。

Directory.GetFiles静的メソッドの使用例

以下にGetFiles静的メソッドを使用してファイルの一覧を取得する例を示します。

DirectoryInfoクラスのGetFilesメソッドは戻り値にFileInfoの配列を返しますが、DirectoryクラスのGetFiles静的メソッドはファイルパスの配列(string[])を返します。

サンプルプログラム

Windowsフォームアプリケーションでのプログラムの実装例を記載します。

ユーザーインターフェース

フォームのインターフェースは次のようにします。

ディレクトリ取得サンプルフォームデザイン

ソースコード

サンプルプログラムのフォームには次のようなソースコードを記述します。

サンプルの実行結果

上記のサンプルプログラムを実行すると、以下のように画面の条件に一致するファイルパスの一覧をリストボックスに表示します。

ディレクトリ取得結果

列挙可能なディレクトリ情報のコレクションを取得

列挙可能なファイル情報のコレクションを返すメソッドとして、DirectoryInfoクラスにはEnumerateFilesメソッドが、DirectoryクラスにはEnumerateFiles静的メソッドが用意されています。
DirectoryInfoクラスのEnumerateFilesメソッドはGetFilesメソッドと同様の引数が指定できまる。戻り値にはSystem.Collections.Generic.IEnumerable型のオブジェクトのコレクションを返します。
DirectoryクラスにはEnumerateFiles静的メソッドもGetFiles静的メソッドと同様の引数が指定できます。戻り値にはSystem.Collections.Generic.IEnumerable型のオブジェクトのコレクションを返しますを返します。

DirectoryInfo.EnumerateFilesメソッドの使用例

以下にEnumerateFilesメソッドを使用してファイルの一覧を取得する例を示します。

Directory.EnumerateFiles静的メソッドの使用例

以下にEnumerateFiles静的メソッドを使用してファイルの一覧を取得する例を示します。

GetFilesメソッドは、ファイル検索機能を持つアプリケーションの実装や、ファイル一覧リストビューの実装の際に役に立つメソッドです。

参考記事

ディレクトリ(フォルダー)の一覧を取得する方法については、以下の記事をご参照ください。

ディレクトリ内にあるディレクトリの一覧を取得する [C#]
C#でディレクトリ(フォルダー)の中にあるディレクトリの一覧を取得する方法について紹介します。 ディレクトリ内のディレクトリの一覧を取得す...