Подтвердить что ты не робот

Directory.GetFiles: как получить только имя файла, а не полный путь?

Возможный дубликат:
Как получить только имена файлов в каталоге с помощью С#?

Используя С#, я хочу получить список файлов в папке.
Моя цель: ["file1.txt", "file2.txt"]

Итак, я написал это:

string[] files = Directory.GetFiles(dir);

К сожалению, я получаю этот вывод: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]

После этого я мог бы удалить ненужную часть "C:\dir \", но есть ли более элегантное решение?

4b9b3361

Ответ 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]);