可能性のある複製:
c#?を使用してディレクトリ内のファイル名のみを取得する方法
C#を使用して、フォルダー内のファイルの一覧を取得します。
私の目標:["file1.txt", "file2.txt"]
だから私はこれを書いた:
string[] files = Directory.GetFiles(dir);
残念ながら、次の出力が表示されます:["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
不要な「C:\ dir \」部分を後で削除できますが、よりエレガントな解決策はありますか?
これを行うには、System.IO.Path.GetFileName
を使用できます。
例えば。、
string[] files = Directory.GetFiles(dir);
foreach(string file in files)
Console.WriteLine(Path.GetFileName(file));
FileInfo
を使用することもできますが、既に使用しているアプローチ(ファイルパスを取得するだけ)よりもはるかに重いです。したがって、GetFiles
クラスの追加機能が必要でない限り、FileInfo
を使用することをお勧めします。
試して、
string[] files = new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();
上記の行はUnauthorizedAccessExceptionをスローする場合があります。このチェックアウトを処理するには、以下のリンクをご覧ください
FileInfo.Name Property を使用して見てください
何かのようなもの
string[] files = Directory.GetFiles(dir);
for (int iFile = 0; iFile < files.Length; iFile++)
string fn = new FileInfo(files[iFile]).Name;
DirectoryInfo Class および FileInfo Class の使用方法もご覧ください
これを使用して、ファイル名のみを取得します。
Path.GetFileName(files[0]);