Ответ 1
foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName))
Console.WriteLine(s);
Как получить все имена файлов, соответствующие шаблону в каталоге? Я пробовал это, но он возвращает полный путь вместо имени файла.
Directory.GetFiles (path, "*.txt")
Нужно ли вручную вырезать путь к каталогу из результата? Это легко, но, возможно, есть еще более простое решение:)
foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName))
Console.WriteLine(s);
Предполагая, что вы используете С#, класс DirectoryInfo будет более полезен для вас:
DirectoryInfo directory = new DirectoryInfo(path);
FileInfo[] files = directory.GetFiles("*.txt");
Класс FileInfo содержит свойство Name
, которое возвращает имя без пути.
Смотрите документацию DirectoryInfo и документацию FileInfo для Дополнительная информация.
Вы хотите переписать через подкаталоги? Используйте Directory.EnumerateFiles
:
var fileNames = Directory.EnumerateFiles(@"\", "*.*", SearchOption.AllDirectories);
Используйте 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);
}
Вы можете использовать следующий код для получения имен файлов:
DirectoryInfo info = new DirectoryInfo("C:\Test");
FileInfo[] files = info.GetFiles("*.txt");
foreach(FileInfo file in files)
{
string fileName = file.Name;
}
var filenames = Directory.GetFiles(@"C:\\Images", "*.jpg").
Select(filename => Path.GetFileNameWithoutExtension(filename)).
ToArray();
Попробуйте, если это то, что вы хотите
Попробуйте это
IEnumerable<string> fileNames =
Directory.GetFiles(@"\\srvktfs1\Metin Atalay\", "*.dll")
.Select(Path.GetFileNameWithoutExtension);