1. ホーム
  2. c#

[解決済み] c#でディレクトリ内のファイル名だけを取得するには?

2023-06-29 15:10:58

質問

以下のようなコードを使用すると、個々のファイルの全パスを含む文字列配列が得られます。

private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf");

パス全体ではなく、文字列の中のファイル名のみを取得する方法があれば教えていただきたいです。

どのように解決するのですか?

あなたは Path.GetFileName でフルパスからファイル名を取得します。

private string[] pdfFiles = Directory.GetFiles("C:\\Documents", "*.pdf")
                                     .Select(Path.GetFileName)
                                     .ToArray();


編集:上記の解決策では LINQ を使用しているため、少なくとも.NET 3.5が必要です。それ以前のバージョンで動作するソリューションはこちらです。

private string[] pdfFiles = GetFileNames("C:\\Documents", "*.pdf");

private static string[] GetFileNames(string path, string filter)
{
    string[] files = Directory.GetFiles(path, filter);
    for(int i = 0; i < files.Length; i++)
        files[i] = Path.GetFileName(files[i]);
    return files;
}