2012-07-29 86 views
0

我试图删除路径例如文件名:删除文件名

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

会导致:

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

铭记的是,文件名可能会改变,正则表达式是实现这一目标的最佳方式吗?

回答

3

其实,Path.GetDirectoryName会/ 's到\' s。

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 
+0

接受,因为你是砰的一声,随着路径,因为它的Linux路径,“/”被转换为“\” – user1559618 2012-07-29 19:11:19

6

您可以使用:

Path.GetDirectoryName(path); 
2

有针对

Path.GetDirectoryName(fileName) 
在System.IO.Path的方法
2

使用System.IO.Path.GetDirectoryName

System.IO.Path.GetDirectoryName("/vmfs/volumes/50153b66-6aac5486-e942-080027a10080/TestMachine/TestMachine.vmx") 
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; 
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/