Hy, 我想在Maven項目中獲取資源文件夾(例如:C:\ Users \ Raul \ workspace \ Serial \ src \ test \ resources),但每次運行此java代碼時:Maven資源文件夾
System.out.println(getClass().getResource("").getPath());
它返回我這個路徑:C:/用戶/勞爾/工作區/串口/目標/測試類/
我最後一次使用Maven的時候,曾這樣沒有從我的任何變化。 Thx提前。
Hy, 我想在Maven項目中獲取資源文件夾(例如:C:\ Users \ Raul \ workspace \ Serial \ src \ test \ resources),但每次運行此java代碼時:Maven資源文件夾
System.out.println(getClass().getResource("").getPath());
它返回我這個路徑:C:/用戶/勞爾/工作區/串口/目標/測試類/
我最後一次使用Maven的時候,曾這樣沒有從我的任何變化。 Thx提前。
使用典型設置,Maven將資源複製到target/classes
(或target/test-classes
)目錄。此外,target/classes
(或target/test-classes
)目錄已添加到類路徑中。
如果您有一個文件src/test/resources/foo.txt
,那麼您將使用getResource("/foo.txt")
訪問文件。
一般而言,您不希望代碼引用源文件夾來訪問資源。資源可能放在多個位置,並且「過濾」資源是非常常見的(用構建屬性值替換標記)。在過濾的情況下,您絕對不希望處理的資源文件位於源目錄中。
thx。如果我必須從jar文件中讀寫文件(對普通用戶不可見),那我現在該怎麼做? –
@RaulVasi我最近沒有嘗試過,但我相信任何使用'getResource()'的類路徑中任何jar文件都是可用的。如果bar.jar在頂層包含一個名爲foo.txt的文件,那麼我相信你可以說'getResource(「/ foo.txt」)並獲取文件,無論它是在jar還是直接在classpath中。 – Rob
資源不是(一定)文件系統條目。不要像這樣使用它們。 –
程序應該從那裏創建,修改和刪除文件。 –
它確實不應該。不要混淆開發環境和運行時環境。 –