我想使用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()
(以防以后需要存储它,请根据某些过滤器进行检查,或者将其呈现给用户(。