你能帮我从字符串中找到文件名吗?现在我有一个内容为"C:\xxxx\xxxx\xxxx\abc.pdf"的字符串。但我只想要文件名,即abc.pdf。如何使用字符串函数来获取它呢?
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
来检查文件是否存在,而且是一个文件而不是一个目录。来自 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(string path)
:
System.IO.Path.GetFileNameWithoutExtension("C:\xxxx\xxxx\xxxx\abc.pdf")
然后你会得到 abc