C#でフォルダ内のファイル名一覧を取得する

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());
        }
    }
}

 

関連記事