2010-04-30 70 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你可能会发现你的需求