[英]Not able to read file using relative path
我不知道出什么問題了,但是我收到了noSuchFileException.path是正確的,我可以通過cmd訪問它。
Path file = Paths.get("../resources/input.txt");
BufferedReader reader = Files.newBufferedReader(file, Charset.defaultCharset());
從文件名來看,您正在嘗試讀取資源。 資源不是文件。 至少從概念上講,它包裝在JAR或WAR或EAR文件中。 您應該使用Class.getResource()
和朋友。 在這種情況下,可能需要getResourceAsStream()
,而沒有..
只是為了使其正式化:
想象一下一個目錄結構: /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
),現在您從根目錄(或在Windows的情況下,從工作目錄所在的驅動器)指定絕對路徑(在Unix上) 。
存在一個特殊情況。 (且) 僅在當前工作目錄位於根目錄/
(“絕對”根目錄或chroot監獄,無論哪種情況)時,(點)和..(點點)引用相同的目錄。 Windows中的等效項位於驅動器根目錄(例如C:\\
)。
也許您可以嘗試通過file.toAbsolutePath().normalize()
檢查BufferedReader所采用的路徑,以查看沒有冗余元素的結果路徑
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.