web-dev-qa-db-ja.com

ディレクトリ内のすべてのファイル名を取得するにはどうすればよいですか?

ディレクトリ内のパターンに一致するすべてのファイル名を取得するにはどうすればよいですか?これを試しましたが、ファイル名ではなくフルパスが返されます。

Directory.GetFiles (path, "*.txt")

結果からディレクトリパスを手動で切り抜く必要がありますか?簡単ですが、もっと簡単な解決策があるかもしれません:)

15
mafu
foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName))
       Console.WriteLine(s);
34
Grif

C#を使用していると仮定すると、DirectoryInfoクラスの方が便利です。

DirectoryInfo directory = new DirectoryInfo(path);
FileInfo[] files = directory.GetFiles("*.txt");

FileInfoクラスには、パスなしで名前を返すプロパティNameが含まれています。

詳細については、 DirectoryInfoドキュメント および FileInfoドキュメント を参照してください。

12

サブディレクトリを介して再帰しますか?使用する - Directory.EnumerateFiles

var fileNames = Directory.EnumerateFiles(@"\", "*.*", SearchOption.AllDirectories);
8
Nick Miller

コードで Path.GetFileName を使用します。

foreach(var file in Directory.GetFiles(path, "*.txt"))
{
   Console.WriteLine(Path.GetFileName(file));
}

別の解決策:

DirectoryInfo dir = new DirectoryInfo(path);
var files = dir.GetFiles("*.txt");
foreach(var file in files)
{
   Console.WriteLine(file.Name);
}
3
Giorgi

次のコードを使用して、ファイル名を取得できます。

    DirectoryInfo info  = new DirectoryInfo("C:\Test");
    FileInfo[] files = info.GetFiles("*.txt");

    foreach(FileInfo file in files)
    {
        string fileName = file.Name;
    }
1
Genady Sergeev
var filenames = Directory.GetFiles(@"C:\\Images", "*.jpg").
                Select(filename => Path.GetFileNameWithoutExtension(filename)).
                ToArray();

それがあなたが望むものであるならば、これを試してください

1
sanjay

これを試して

IEnumerable<string> fileNames =
                Directory.GetFiles(@"\\srvktfs1\Metin Atalay\", "*.dll")
                    .Select(Path.GetFileNameWithoutExtension);
0
Metin Atalay