为什么我在 Windows 系统上找不到具有规范化路径的文件?



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

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

文件名是一个文件路径,包含当前目录的sysmbols,如"."或".."路径规范化后,它只删除路径中的点,窗口无法找到没有点的新路径。但是上面的代码在其他系统上运行良好。我想知道,如果我想检查一条有点的路径是否存在,为什么以及该怎么办?

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

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

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

一般情况下,您不希望正常化。根据情况,您要么只希望路径保持原样,要么path.toAbsolutePath()(以防以后需要存储它,请根据某些过滤器进行检查,或者将其呈现给用户(。

相关内容

  • 没有找到相关文章

最新更新