2010-04-30 130 views
3

您能幫我從字符串中找到文件名嗎?現在我有一串像「C:\ xxxx \ xxxx \ xxxx \ abc.pdf」的內容。但我只想要文件名即。 abc.pdf。它將如何通過使用字符串函數獲得?從字符串獲取文件名

回答

11

使用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和酒吧不存在。

+0

@Dilse Naaz一些有趣的事情:我不明白你的評論,我害怕。我顯示的代碼處理字符串。 – 2010-04-30 06:37:16

4

使用Path.GetFileName() Method

從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' 
0

System.IO.Path.GetFilename(yourFilename) 將返回文件的名稱。

2

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

看一看all the members of FileInfo你可能會發現你的需求