【问题标题】:Decide if path is file or directory (the path does not exist on disk)判断路径是文件还是目录(磁盘上不存在路径)
【发布时间】:2012-07-17 10:34:54
【问题描述】:

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

例如 Path.GetDirectoryName("D:\Work\Project\Sources\trunk\Project2\bin\Debug") 返回 "D:\Work\Project\Sources\trunk\Project2\bin\"

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

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

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

【问题讨论】:

  • 没有正确答案。文件名不必必须包含“.”,并且(如您所说)目录名可以包含“.”。

标签: .net file path directory


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 2017-05-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 2021-06-22
      • 2012-01-15
      相关资源
      最近更新 更多