簡體   English   中英

無法使用相對路徑讀取文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM