从字符串中获取文件名

4

你能帮我从字符串中找到文件名吗?现在我有一个内容为"C:\xxxx\xxxx\xxxx\abc.pdf"的字符串。但我只想要文件名,即abc.pdf。如何使用字符串函数来获取它呢?

6个回答

12

使用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来检查文件是否存在,而且是一个文件而不是一个目录。
此方法还不检查目录层次结构中的所有其他元素是否存在 - 因此,即使foo和bar不存在,您也可以传入“C:\foo\bar\baz.txt”,它将返回baz.txt。

@Dilse Naaz:恐怕我不理解你的评论。我展示的代码处理字符串。 - Jon Skeet

4

使用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

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

0

System.IO.Path.GetFilename(yourFilename) 将返回文件的名称。


0
你可以使用 System.IO.Path.GetFileNameWithoutExtension(string path)

System.IO.Path.GetFileNameWithoutExtension("C:\xxxx\xxxx\xxxx\abc.pdf")

然后你会得到 abc


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接