Directory.GetFiles: как получить только имя файла, а не полный путь?
Возможный дубликат:
Как получить только имена файлов в каталоге с помощью С#?
Используя С#, я хочу получить список файлов в папке.
Моя цель: ["file1.txt", "file2.txt"]
Итак, я написал это:
string[] files = Directory.GetFiles(dir);
К сожалению, я получаю этот вывод: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]
После этого я мог бы удалить ненужную часть "C:\dir \", но есть ли более элегантное решение?
Ответы
Ответ 1
Вы можете использовать System.IO.Path.GetFileName
для этого.
например.
string[] files = Directory.GetFiles(dir);
foreach(string file in files)
Console.WriteLine(Path.GetFileName(file));
Пока вы можете использовать FileInfo
, он намного более тяжелый, чем тот подход, который вы уже используете (просто извлечение путей к файлам). Поэтому я предлагаю вам придерживаться GetFiles
, если вам не нужны дополнительные функции класса FileInfo
.
Ответ 2
Попробуйте,
string[] files = new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();
Над строкой может выбраться UnauthorizedAccessException. Чтобы обработать эту ссылку ниже ссылки
С# Handle System.UnauthorizedAccessException в LINQ
Ответ 3
Посмотрите на использование Свойство FileInfo.Name
что-то вроде
string[] files = Directory.GetFiles(dir);
for (int iFile = 0; iFile < files.Length; iFile++)
string fn = new FileInfo(files[iFile]).Name;
Также рассмотрите использование DirectoryInfo Class и FileInfo Class
Ответ 4
Используйте это, чтобы получить только имя файла.
Path.GetFileName(files[0]);