2012-07-18 211 views
0

我想从可能包含或不包含文件名的路径中提取目录。问题是,当我试图获取已经是目录的路径的目录名时,Path.GetDirectoryName()返回该目录的上一级。路径从数据库加载,所以我无法检查文件属性。决定路径是文件还是目录(该路径在磁盘上不存在)

Ex。 Path.GetDirectoryName( “d:\工作\项目\源\干线\ Project2的\ BIN \调试”)返回 “d:\工作\项目\源\干线\ Project2的\ BIN \”

我在想一个简单的算法,它检查路径是否包含“。”字符;如果是,那么我们正在处理一个包含文件名的路径。不幸的是,目录名称也可以包含“。”字符。

我知道这个问题没有完美的解决方案,但下一个最好的东西是什么?

已经有一个Stackoverflow question关于这个问题,但它假定文件或目录已经存在。

+0

没有正确的答案。文件名*不必包含'。',并且(如你所说)目录名*可以包含'。'。 – 2012-07-18 11:48:20

回答

3

如果您的目录或文件不存在,则无法知道它是文件还是目录。

在您的示例D:\Work\Project\Sources\trunk\Project2\bin\Debug中,bin目录中可能有一个名为Debug(无扩展名)的文件。

又如:D:\Work\Project\Sources\trunk\Project2\bin\Debug\file.exe,有可能是一个名为file.exe这是Debug子目录...

1

为您的情况,如果你真的案件只涉及“file.ext”的格式,然后以下正则表达式将回答你需要的东西

^(.*/)([^/]*)$ 
相关问题