你能帮我找到字符串中的文件名吗?现在我有一串内容,如“C:\ xxxx \ xxxx \ xxxx \ abc.pdf”。但我只想要文件名即。 abc.pdf。如何使用字符串函数?
答案 0 :(得分:11)
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”并且即使foo和bar也会返回baz.txt不存在。
答案 1 :(得分:4)
(已编辑)样本:
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 :(得分: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你可能会发现一些有趣的东西
答案 3 :(得分:0)
尤其使用System.IO.Path的方法 Path.GetFileName
答案 4 :(得分:0)
System.IO.Path.GetFilename(yourFilename) 将返回文件名。
答案 5 :(得分:0)
您可以使用:
System.IO.Path.GetFileNameWithoutExtension("C:\xxxx\xxxx\xxxx\abc.pdf")
你会回来abc