Как получить все имена файлов в каталоге? - PullRequest
15 голосов
/ 12 сентября 2010

Как получить все имена файлов, соответствующие шаблону в каталоге?Я пробовал это, но он возвращает полный путь вместо имени файла.

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

Нужно ли вручную обрезать путь к каталогу из результата?Это легко, но, возможно, есть еще более простое решение:)

Ответы [ 7 ]

34 голосов
/ 12 сентября 2010
foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName))
       Console.WriteLine(s);
12 голосов
/ 12 сентября 2010

Если вы используете C #, класс DirectoryInfo будет вам более полезен:

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

Класс FileInfo содержит свойство Name, которое возвращает имя без пути.

См. документацию DirectoryInfo и документацию FileInfo для получения дополнительной информации.

8 голосов
/ 12 сентября 2010

Вы хотите проходить через подкаталоги?Используйте Directory.EnumerateFiles:

var fileNames = Directory.EnumerateFiles(@"\", "*.*", SearchOption.AllDirectories);
3 голосов
/ 12 сентября 2010

Используйте 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);
}
1 голос
/ 29 октября 2012
var filenames = Directory.GetFiles(@"C:\\Images", "*.jpg").
                Select(filename => Path.GetFileNameWithoutExtension(filename)).
                ToArray();

Попробуйте, если это то, что вы хотите

1 голос
/ 12 сентября 2010

Вы можете использовать следующий код для получения имен файлов:

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

    foreach(FileInfo file in files)
    {
        string fileName = file.Name;
    }
0 голосов
/ 15 сентября 2017

Попробуйте это

IEnumerable<string> fileNames =
                Directory.GetFiles(@"\\srvktfs1\Metin Atalay\", "*.dll")
                    .Select(Path.GetFileNameWithoutExtension);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...