System.IO.Directory.GetFilesメソッドを使うと指定したフォルダ内にあるファイルの一覧を取得することができます。
また検索オプションを指定することでサブフォルダも対象になります。
フォルダ内のファイルが多い場合はEnumerageFilesメソッドの使用が推奨されています。詳細はフォルダ内のファイル名一覧を取得する(EnumerateFiles)を見てください。
フォルダ内のファイル一覧を取得
System.IO.Directory.GetFilesメソッドの引数にファイルの一覧を取得したいフォルダのパスを指定します。戻り値はファイルの絶対パスが入ったstring型の配列になります。
ファイルがない場合は空の配列が返ります。
また、指定したフォルダが存在しない場合はエラーになるので注意が必要です。
using System;
using System.IO;
class Program
{
public static void Main()
{
// フォルダのパス
var dirPath = @"D:\source\repos\test\test";
// フォルダ内のファイル一覧を取得
var fileArray = Directory.GetFiles(dirPath);
foreach (string file in fileArray) {
Console.WriteLine(file);
}
}
}
このメソッドで取得できるのは指定したフォルダにあるファイルのみになります。
検索する条件を指定してファイル名一覧を取得
System.IO.Directory.GetFilesメソッドの第2引数に検索パターンを指定することができます。戻り値は同じくファイルパスの入ったstring型の配列です。
第1引数は検索するフォルダパスを指定します。
第2引数はワイルドカードを使い、検索パターン(string型)を指定します。
ワイルドカードは、
「*」任意の0文字以上を表す、
「?」任意の1文字を表す、という感じです。
テキストファイルだけを取得したい場合、「*.txt」と指定します。
*だけや空文字を指定した場合はすべてのファイルが対象になります。
using System;
using System.IO;
class Program
{
public static void Main()
{
// フォルダのパス
var dirPath = @"D:\source\repos\test\test";
// フォルダ内からソースファイル(*.cs)の一覧を取得
var fileArray = Directory.GetFiles(dirPath, "*.cs");
foreach (string file in fileArray) {
Console.WriteLine(file);
}
// フォルダ内の全てのファイル一覧を取得
foreach (string file in Directory.GetFiles(dirPath, "*"))
{
Console.WriteLine(file);
}
}
}
フォルダ内のサブフォルダを含めてすべてのファイル名一覧を取得
System.IO.Directory.GetFilesメソッドの第3引数に検索オプションを指定することで、フォルダ内のサブフォルダも検索対象にすることができます。
第1引数には検索するフォルダのパスを指定、
第2引数にはワイルドカードを使った検索パターンを指定、
第3引数にはSearchOptionを指定します。下の2つから選択します。
SearchOption.AllDirectories : 指定されたフォルダとサブフォルダが対象
SearchOption.TopDirectoryOnly : 指定されたフォルダのみが対象
using System;
using System.IO;
class Program
{
public static void Main()
{
// フォルダのパス
var dirPath = @"D:\source\repos\test\test";
// 指定したフォルダとサブフォルダからソースファイル(*.cs)の一覧を取得
var fileArray = Directory.GetFiles(dirPath, "*.cs", SearchOption.AllDirectories);
foreach (string file in fileArray) {
Console.WriteLine(file);
}
// 指定したフォルダとフォルダ内の全てのファイル一覧を取得
foreach (string file in Directory.GetFiles(dirPath, "*", SearchOption.AllDirectories))
{
Console.WriteLine(file);
}
}
}
C# 記事まとめページに戻る(他のサンプルコードもこちら)
コメント