85

重複の可能性:
c# を使用してディレクトリ内のファイル名のみを取得する方法は?

C# を使用して、フォルダー内のファイルの一覧を取得したいと考えています。
私の目標:["file1.txt", "file2.txt"]

だから私はこれを書いた:

string[] files = Directory.GetFiles(dir);

残念ながら、次の出力が得られます。["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]

後で不要な "C:\dir\" 部分を取り除くこともできますが、もっと洗練された解決策はありますか?

4

4 に答える 4

194

これを行うために使用できますSystem.IO.Path.GetFileName

例えば、

string[] files = Directory.GetFiles(dir);
foreach(string file in files)
    Console.WriteLine(Path.GetFileName(file));

を使用することもできますFileInfoが、既に使用しているアプローチ (ファイル パスを取得するだけ) よりもはるかに重いです。したがって、クラスGetFilesの追加機能が必要でない限り、そのままにしておくことをお勧めします。FileInfo

于 2012-09-21T04:48:01.237 に答える
39

試す、

  string[] files =  new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();

上記の行は、UnauthorizedAccessException をスローする場合があります。これを処理するには、以下のリンクをチェックしてください

C# LINQ で System.UnauthorizedAccessException を処理する

于 2012-09-21T05:07:34.483 に答える
9

FileInfo.Name プロパティの使用をご覧ください。

何かのようなもの

string[] files = Directory.GetFiles(dir); 

for (int iFile = 0; iFile < files.Length; iFile++)
    string fn = new FileInfo(files[iFile]).Name;

DirectoryInfo クラスFileInfo クラスの使用もご覧ください。

于 2012-09-21T04:47:19.307 に答える
4

これを使用して、ファイル名のみを取得します。

Path.GetFileName(files[0]);
于 2012-09-21T04:48:12.933 に答える