【问题标题】:Why can't I find the file with normalized path on windows system?为什么在windows系统上找不到规范化路径的文件?
【发布时间】:2018-10-29 16:29:04
【问题描述】:

我想使用 java 来通过文件路径检查文件是否存在。我知道 Paths 类中有一个名为 normalized() 的方法。这是我的代码:

File file = Paths.get(fileName).normalize().toFile();
        if (!file.exists()) {
            return "File does not exist.";
        }

文件名是带有当前目录符号的文件路径,如“.”或“..” 路径归一化后,只是删除路径的点,windows找不到没有点的新路径。但是上面的代码在其他系统上运行良好。我想知道如果我想检查带有点的路径是否存在,我应该怎么做?

【问题讨论】:

    标签: java file-io path


    【解决方案1】:

    为什么要从 Paths API 切换到文件 API?

    使用:Files.exists(Paths.get(fileName).normalize());

    正如文档所说,规范化删除了 /./ 结构以及 X/../ 结构。然而,在奇怪的软链接结构的情况下,这可能会导致预期的文件略有不同,是的,即使在 Windows 上,您也可以这样做。可能与此有关。给我们规范化前后的路径(只需 sysout 即可),我们或许可以为您提供更多详细信息。

    通常您不希望标准化。根据情况,您要么只希望路径保持原样,要么(如果您需要将其存储以备后用,请对照某些过滤器检查它,或将其呈现给用户)path.toAbsolutePath()

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2016-01-09
      • 2015-03-25
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多