确定路径是文件还是目录(磁盘上不存在路径)

时间:2012-07-18 11:44:05

标签: .net file path directory

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

实施例 Path.GetDirectoryName(“D:\ Work \ Project \ Sources \ trunk \ Project2 \ bin \ Debug”)返回“D:\ Work \ Project \ Sources \ trunk \ Project2 \ bin \”

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

另一个例子:D:\Work\Project\Sources\trunk\Project2\bin\Debug\file.exe,可能有一个名为file.exe的目录,它是Debug的子目录......

答案 1 :(得分:1)

对于您的场景,如果您的案例实际上只涉及“file.ext”格式,那么以下正则表达式将回答您需要的

^(.*/)([^/]*)$