从C#中的文件路径中删除文件名

时间:2012-07-29 18:30:19

标签: c# .net windows

我正在尝试删除路径的文件名,例如:

/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx

会导致:

/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/

请记住文件名可能会改变,正则表达式是实现此目的的最佳方法吗?

7 个答案:

答案 0 :(得分:6)

您可以使用:

Path.GetDirectoryName(path);

答案 1 :(得分:3)

您可以使用

Path.GetDirectoryName()

更多信息:http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname.aspx

答案 2 :(得分:3)

实际上,Path.GetDirectoryName将是/的。

var filepath = "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx";
var directorypath = filepath.Substring(0, filepath.LastIndexOf("/", StringComparison.Ordinal) + 1);
// /vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/
var dir = Path.GetDirectoryName(filepath);
// \vmfs\volumes\50153b66-6aac5486-e942-080027a10080\TestMachine

答案 3 :(得分:2)

System.IO.Path中有一个方法

Path.GetDirectoryName(fileName)

答案 4 :(得分:2)

使用System.IO.Path.GetDirectoryName

System.IO.Path.GetDirectoryName("/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx")

答案 5 :(得分:2)

这是一个相当重的方法,但有时很高兴知道你使用了防弹技术...

var path = new UriBuilder("file", "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx");
var parent = new Uri(path.Uri, "..");

 Console.WriteLine(parent.AbsolutePath);

结果:

 /vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/

答案 6 :(得分:1)

strPath = "/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx";

string[] strFileParts = strPath.Split( '\\' );
if ( strFileParts.Length > 0 )
{
    str =  strFileParts[strFileParts.Length - 1] );
}

result = full_path - str;