Получение имени файла из строки - PullRequest
3 голосов
/ 30 апреля 2010

Не могли бы вы помочь мне найти имя файла из строки. Теперь у меня есть одна строка содержимого, например "C: \ xxxx \ xxxx \ xxxx \ abc.pdf" Но я хочу только имя файла т.е. abc.pdf. Как это получится при использовании строковых функций?

Ответы [ 5 ]

11 голосов
/ 30 апреля 2010

Использование Path.GetFileName:

string full = @"C:\xxxx\xxxx\xxxx\abc.pdf";
string file = Path.GetFileName(full);
Console.WriteLine(file); // abc.pdf

Обратите внимание, что предполагает последняя часть имени - файл - он не проверяется. Поэтому, если вы дадите ему «C: \ Windows \ System32», он будет требовать имя файла System32, даже если это на самом деле каталог. (Однако передача «C: \ Windows \ System32 \» вернет пустую строку.) Вы можете использовать File.Exists, чтобы проверить, что файл существует и является файлом, а не каталогом. если это поможет.

Этот метод также не проверяет существование всех других элементов в иерархии каталогов - так что вы можете передать "C: \ foo \ bar \ baz.txt", и он вернет baz.txt, даже если foo и bar не существует.

4 голосов
/ 30 апреля 2010

Используйте метод Path.GetFileName ()

(отредактированный) образец со страницы MSDN:

string fileName = @"C:\xxxx\xxxx\xxxx\abc.pdf";
string path = @"C:\xxxx\xxxx\xxxx\";
string path2 = @"C:\xxxx\xxxx\xxxx";

string result;

result = Path.GetFileName(fileName);
Console.WriteLine("GetFileName('{0}') returns '{1}'", 
    fileName, result);

result = Path.GetFileName(path);
Console.WriteLine("GetFileName('{0}') returns '{1}'", 
    path, result);

result = Path.GetFileName(path2);
Console.WriteLine("GetFileName('{0}') returns '{1}'", 
    path2, result);

Этот код производит вывод, подобный следующему:

GetFileName('C:\xxxx\xxxx\xxxx\abc.pdf') returns 'abc.pdf'
GetFileName('C:\xxxx\xxxx\xxxx\') returns ''
GetFileName('C:\xxxx\xxxx\xxxx') returns 'xxxx'
2 голосов
/ 30 апреля 2010

Sytem.IO.FileInfo тоже довольно круто: В вашем случае вы можете сделать

FileInfo fi = new FileInfo("C:\xxxx\xxxx\xxxx\abc.pdf");
string name = fi.Name; // it gives you abc.pdf

Тогда вы можете иметь несколько других частей информации:
файл действительно существует? fi.Exists дает вам ответ
каково его расширение? см fi.Extension
как называется его каталог? см fi.Directory
и т.д.

Посмотрите на всех членов FileInfo , вы можете найти что-то интересное для ваших нужд

0 голосов
/ 30 апреля 2010

System.IO.Path.GetFilename (yourFilename) вернет имя файла.

0 голосов
/ 30 апреля 2010

Используйте методы System.IO.Path , особенно Path.GetFileName .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...