Справочник.Заражен: как получить только имя файла, а не полный путь? [дубликат]
Возможные Дубликаты:
как получить только имена файлов в каталоге с помощью c#?
С помощью C#, я хочу получить список файлов в папке.
Моя цель:["file1.txt", "file2.txt"]
поэтому я написал это:
string[] files = Directory.GetFiles(dir);
к сожалению, я получаю этот выход: ["C:dirfile1.txt", "C:dirfile2.txt"]
Я мог бы раздеть нежелательных "C:dir " часть после этого, но есть ли более элегантное решение?
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. Чтобы справиться с этой проверкой ниже ссылка
взгляните на использование FileInfo.Name собственность
что-то вроде
string[] files = Directory.GetFiles(dir); for (int iFile = 0; iFile < files.Length; iFile++) string fn = new FileInfo(files[iFile]).Name;
Также посмотрите на использование Класс DirectoryInfo и Класс FileInfo