我不知道出了什么问题,但我得到noSuchFileException。路径正确我可以通过cmd访问它。
Path file = Paths.get("../resources/input.txt");
BufferedReader reader = Files.newBufferedReader(file, Charset.defaultCharset());
答案 0 :(得分:2)
根据文件名判断,您正在尝试读取资源。资源不是文件。从概念上讲,它至少包装在JAR或WAR或EAR文件中。您应该使用Class.getResource()
和朋友。在这种情况下,如果没有getResourceAsStream()
,则可能需要..
。
答案 1 :(得分:0)
只是将其正式化:
想象一下目录结构:/foo/bar/example/test/file.txt
/foo/bar/example/
用户名bob
即可。 (点) - 指当前工作目录(例如,在这种情况下为/foo/bar/example/
)。
..(点点) - 指父目录(例如,在这种情况下为/foo/bar/
)。
〜(代字号) [仅限Unix / shell] - 指用户的主目录(例如/home/bob/
)
直接启动目录名不带前面的斜杠(例如test/file.txt
)等效以使用单点(即路径相对于当前路径解析工作目录)。
直接启动一个目录名 前面的斜杠(例如/test/file.txt
),你现在从root指定一个绝对路径(在Unix上)(或者在Windows的情况下,从工作目录所在的驱动器开始。)
存在特殊情况。 (点)和..(点点)指的是同一目录,当且仅当当前工作目录位于根/
时("绝对" root或一个chroot监狱,无论哪种方式)。 Windows中的等效项位于驱动器根目录(例如C:\
)。
答案 2 :(得分:0)
也许您可以尝试通过file.toAbsolutePath().normalize()
检查BufferedReader采用的路径,以查看没有冗余元素的结果路径