从字符串中获取文件名

时间:2010-04-30 06:29:09

标签: c# string

你能帮我找到字符串中的文件名吗?现在我有一串内容,如“C:\ xxxx \ xxxx \ xxxx \ abc.pdf”。但我只想要文件名即。 abc.pdf。如何使用字符串函数?

6 个答案:

答案 0 :(得分: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”并且即使foo和bar也会返回baz.txt不存在。

答案 1 :(得分: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'

答案 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