C#で特定のフォルダ(ディレクトリ)にあるファイル名のリストを取得したい場合は、System.IO.Directory クラスの GetFiles メソッドを使用します。
※同様に System.IO.Directory クラスの GetDirectories メソッドを使うとフォルダ名リストを取得できます
このメソッドではワイルドカードをつかって取得するリストを絞り込んだり、サブフォルダまで含めて検索する事も可能です。
GetFilesメソッドの使い方
public static string[] GetFiles(string path, string searchPattern, System.IO.SearchOption searchOption);
第1引数
検索するディレクトリの絶対パスもしくは相対パスです。
大文字と小文字の区別はありません。
相対パスを指定した場合は結果のファイルリストも相対パスとなるようです。
第2引数
検索するファイルを絞り込む為のパターンをワイルドカード(「*」や「?」)を使って指定します。
ワイルドカード「?」は任意の1文字として検索されます。
ワイルドカード「*」は任意の1文字以上の文字列として検索されます。
例)
- * ・・・ フォルダ内の全てのファイルを取得
- *.txt ・・・ フォルダ内のテキストファイルのみを取得
- ?????.txt ・・・ フォルダ内のファイル名が5文字のテキストファイルのみを取得
第3引数
指定のフォルダにあるファイルのみを取得するか、サブフォルダにあるファイルも合わせて取得するかを選択できます。
SearchOption.TopDirectoryOnly ・・・ 指定のフォルダにあるファイルのみ取得
SearchOption.AllDirectories ・・・ サブフォルダにあるファイルも合わせて取得
使用例
using System; using System.IO; class Test { public static void Main() { try { string[] names = Directory.GetFiles(@"c:\sample", "*"); foreach (string name in names) { Console.WriteLine(name); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } }
関連記事
- C#の値型と参照型の違い
- C#のコンストラクタでオーバーロード
- C#のコンストラクタの継承
- C#のジェネリックを使おう
- C#のデリゲート (delegate) って何?
- C#のデリゲートお手軽にする匿名メソッド
- C#のラムダ式【=>】って何?
- C#で基底クラスのメソッドを置き換えるオーバーライド
- C#でキャストとas演算子を使いこなす
- C#で型を判別するtypeofとis演算子
- C#の値型でもnullを扱えるようにするNullable
- C#のリソース解放にはIDisposableとusingを使おう
- C#のStringとstring、Int32とint 違いは・・・ない!
- C#でasync/awaitを使った非同期処理
- C#で文字列を指定の区切り文字で分割
- C#のstring.Formatで桁数や書式を指定する
- C#の配列やListをソートする
- C#の配列やListを検索する (Find,FindAll,FindIndex)
- C#の配列やListを高速に検索する (BinarySearch)
- C#の配列の中に指定の要素が存在するかを調べる(LINQ Contains)
- C#の配列の中に条件を満たす要素が存在するかを調べる(LINQ Any)
- C#の配列から条件に合う要素を抽出する(LINQ Where)
- C#の配列で要素毎の処理結果を得る(LINQ Select)
- C#の配列を並び替える(LINQ OrderBy,ThenBy)
- C#の配列をグループ毎に処理する(LINQ GroupBy)
- C#の配列を内部結合(INNER JOIN)する(LINQ Join)
- C#の配列から最初の要素を取り出す(LINQ First,FirstOrDefault)
- C#の配列の重複要素を削除する(LINQ Distinct)
- C#でフォルダ内のファイル名一覧を取得する
- C#でテキストファイルを読み込む
- C#でテキストファイルに書き込む
- C#でバイナリファイルを読み込む
- C#でバイナリファイルに書き込む
コメントをお書きください