Не могли бы вы помочь мне найти имя файла из строки. Теперь у меня есть одна строка содержимого, например «C:\xxxx\xxxx\xxxx\abc.pdf». Но мне нужно только имя файла, т.е. абв.pdf. Как это получится при использовании строковых функций?
Получение имени файла из строки
Ответы:
Используйте 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 не существуют. существует.
Используйте метод 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'
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 вы можете найти что-то интересное для ваших нужд
System.IO.Path.GetFilename(yourFilename) вернет имя файла.
Вы можете использовать:
System.IO.Path.GetFileNameWithoutExtension("C:\xxxx\xxxx\xxxx\abc.pdf")
И ты вернешься abc