2016-07-14 216 views
0

Hy, 我想在Maven項目中獲取資源文件夾(例如:C:\ Users \ Raul \ workspace \ Serial \ src \ test \ resources),但每次運行此java代碼時:Maven資源文件夾

System.out.println(getClass().getResource("").getPath()); 

它返回我這個路徑:C:/用戶/勞爾/工作區/串口/目標/測試類/

我最後一次使用Maven的時候,曾這樣沒有從我的任何變化。 Thx提前。

+0

資源不是(一定)文件系統條目。不要像這樣使用它們。 –

+0

程序應該從那裏創建,修改和刪除文件。 –

+0

它確實不應該。不要混淆開發環境和運行時環境。 –

回答

1

使用典型設置,Maven將資源複製到target/classes(或target/test-classes)目錄。此外,target/classes(或target/test-classes)目錄已添加到類路徑中。

如果您有一個文件src/test/resources/foo.txt,那麼您將使用getResource("/foo.txt")訪問文件。

一般而言,您不希望代碼引用源文件夾來訪問資源。資源可能放在多個位置,並且「過濾」資源是非常常見的(用構建屬性值替換標記)。在過濾的情況下,您絕對不希望處理的資源文件位於源目錄中。

+0

thx。如果我必須從jar文件中讀寫文件(對普通用戶不可見),那我現在該怎麼做? –

+0

@RaulVasi我最近沒有嘗試過,但我相信任何使用'getResource()'的類路徑中任何jar文件都是可用的。如果bar.jar在頂層包含一個名爲foo.txt的文件,那麼我相信你可以說'getResource(「/ foo.txt」)並獲取文件,無論它是在jar還是直接在classpath中。 – Rob