VB.NET フォルダ内にあるファイルの一覧を取得する
フォルダ内にあるファイルの一覧を取得するにはDirectory.GetFiles
を使用します。
例えば以下のフォルダとファイルがあるとします。
- C:
- work1
- テキスト1.txt
- テキスト2.txt
- 帳票1.xls
- subwork1
- サブテキスト1.txt
- サブテキスト2.txt
- サブ帳票1.xls
- work2
- テキスト3.txt
- テキスト4.txt
- 帳票2.xls
- work1
このとき、C:\work1
フォルダ内にあるテキストファイル(拡張子が.txt
のファイル)を全て取得したい場合は以下のようにします。
For Each filepath As String In Directory.GetFiles("C:\work1", "*.txt", SearchOption.TopDirectoryOnly)
Console.WriteLine(filepath)
Next
'実行結果
'C:\work1\テキスト1.txt
'C:\work1\テキスト2.txt
Directory.GetFiles
Directory.GetFiles(検索するフォルダ, フィルタ, サブディレクトリを含めるかどうか)
で指定します。
N Directory.GetFiles
の名前空間はSystem.IO
なので、コンパイルエラーになってしまう場合はvb
ファイルの先頭にImports System.IO
を追加するか、Directory.GetFiles
の代わりにSystem.IO.Directory.GetFiles
としてください。
ワイルドカードでフィルタ
第2引数で取得するファイルをワイルドカード(*
や?
)でフィルタをすることができます。
*
と指定すれば、任意の0文字以上が対象となるため、全てのファイルを取得します。
For Each filepath As String In Directory.GetFiles("C:\work1", "*", SearchOption.TopDirectoryOnly)
Console.WriteLine(filepath)
Next
'実行結果
'C:\work1\テキスト1.txt
'C:\work1\テキスト2.txt
'C:\work1\帳票1.xls
今回の場合は拡張子が.txt
のファイルのみを取得したいため、*.txt
(ファイル名の末尾が.txt
で終わるファイル)を指定しています。
サブディレクトリの扱い
第3引数では、サブディレクトリを含めるかどうかを指定できます。
現在のディレクトリのみ取得する場合はTopDirectoryOnly
を指定し、サブディレクトリも含めて取得する場合はAllDirectories
を指定します。
上記の例で、C:\work1
の中にあるサブディレクトリ(subwork1
)の中にあるファイルも含めて取得したい場合は以下のようにします。
For Each filepath As String In Directory.GetFiles("C:\work1", "*.txt", SearchOption.AllDirectories)
Console.WriteLine(filepath)
Next
'実行結果
'C:\work1\テキスト1.txt
'C:\work1\subwork1\サブテキスト1.txt
'C:\work1\subwork1\サブテキスト2.txt
'C:\work1\テキスト2.txt
ファイルではなくフォルダの一覧を取得する方法はVB.NET フォルダ内にあるフォルダ一覧を取得するで紹介しています。