Справочник.Заражен: как получить только имя файла, а не полный путь? [дубликат]


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

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

поэтому я написал это:

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

к сожалению, я получаю этот выход: ["C:dirfile1.txt", "C:dirfile2.txt"]

Я мог бы раздеть нежелательных "C:dir " часть после этого, но есть ли более элегантное решение?

4 52

4 ответа:

можно использовать System.IO.Path.GetFileName для этого.

например,

string[] files = Directory.GetFiles(dir);
foreach(string file in files)
    Console.WriteLine(Path.GetFileName(file));

в то время как вы могли бы использовать FileInfo, это гораздо более тяжелый, чем подход, который вы уже используете (просто получение путей к файлам). Поэтому я бы предложил вам придерживаться GetFiles Если вам не нужна дополнительная функциональность FileInfo класса.

попробуйте

  string[] files =  new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();

выше строки может бросить UnauthorizedAccessException. Чтобы справиться с этой проверкой ниже ссылка

Система Обработки C#.UnauthorizedAccessException в LINQ

взгляните на использование FileInfo.Name собственность

что-то вроде

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

for (int iFile = 0; iFile < files.Length; iFile++)
    string fn = new FileInfo(files[iFile]).Name;

Также посмотрите на использование Класс DirectoryInfo и Класс FileInfo

использовать это, чтобы получить только имя файла.

Path.GetFileName(files[0]);