C#で指定するディレクトのファイルの一覧を取得してみる。

C# コンピュータ
C#

サンプルプログラム

// カレントディレクトリを取得
string dir = System.Environment.CurrentDirectory;

// ファイルの一覧を取得1
foreach(string file in System.IO.Directory.EnumerateFiles(dir))
{
    Console.WriteLine($"{file}");
}
// 結果
//H:\csharp\dotnet8\console\A0000\A0000.csproj
//H:\csharp\dotnet8\console\A0000\Program.cs

// ファイルの一覧を取得2
System.IO.DirectoryInfo dirInfo = new(dir);
foreach(System.IO.FileInfo fileInfo in dirInfo.GetFiles("*.*"))
{
    Console.WriteLine($"{fileInfo.FullName}");
}
// 結果
//H:\csharp\dotnet8\console\A0000\A0000.csproj
//H:\csharp\dotnet8\console\A0000\Program.cs

サンプルプログラムでは1と2いずれも同じ結果になりました。

1のSystem.IO.Directory.EnumerateFiles()の戻り値はIEmuratable<string>でファイル名が文字列(string)として返ります。
ファイルではなくディレクトリの一覧が欲しい場合はDirectory.EnumerateDirectories()ファイルとディレクトリ両方が欲しい場合はDirectory.EnumerateFileSystemEntries()があります。

2はSystem.IO.DirectoryInfoのGetFiles()を使ってファイルの一覧を取得します。戻り値はFileInfo型です。GetFiles()のオプションにSystem.IO.SearchOption.AllDirectoriesをつけるとサブディレクトリを含めて検索します。
System.IO.FileInfo型はSystem.IO.FileSystemInfoクラスの派生で、ファイル名以外にファイルの長さや更新日付などのプロパティがあり、ファイルの削除、コピー、移動などのメソッドがあります。
ディレクトリの情報が欲しい場合はDirectoryInfo.GetDirectories()、ファイルとディレクトリの情報が欲しい場合は DirectoryInfo.GetFileSystemInfos()を使います。

ファイル名のみ取得したい場合は1でそれ以外のファイルの情報も欲しい場合は2を使うと良さそうです。

コメント