我想讀取使用Properties.load();
maven自然項目中的屬性文件我指定一個路徑作爲字符串ex。 "./someFolder/file.properties"
, 但是當我嘗試在其他項目中使用我的項目作爲依賴項時,我不得不將這些文件複製到另一個項目中,因爲"."
意味着當前目錄。 有沒有一種方法來指定一個路徑,所以它總是有效的,儘管我從哪裏調用它? , 我嘗試過使用MyClass.class.getClassLoader().getResourceAsStream()
,但我在使用它時遇到了麻煩,它有時會有效並且在其他時間失敗。什麼是指定從類路徑讀取路徑,即使項目是一個罐子的最佳方式
回答
你的問題有很多誤解。
「。」裝置類路徑
號當文件系統路徑內(即一個路徑傳遞給一個文件的構造,或的FileReader,或的FileInputStream)使用的,「」表示當前目錄。
當用於資源路徑(即傳遞到Class[Loader].getResource[AsStream]()
)時,它是無效的。
訣竅是仔細閱讀文檔。
getResourceAsStream()
預計/
-分離的路徑。
使用ClassLoader.getResource[AsStream]()
時,此路徑始終從類路徑的根開始。所以你會傳遞一個完全合格的類名稱的路徑,除了點將被斜槓替換。因此,com/foo/bar.properties
在包com.foo
中查找名爲bar.properties
的資源。
當使用SomeClass.class.getResource[AsStream]()
,或者路徑以/
開始,該路徑從類路徑的根開始,或沒有,並且它從包裝SomeClass的的開始。因此,如果SomeClass在包com.foo
中,則使用/com/foo/bar.properties
相當於使用bar.properties
。
因爲你沒有提供任何細節,所以很難說出你做錯了什麼。但是您真的需要了解在文件系統上打開文件和讀取由類加載器加載的資源之間的區別。有時候,資源恰好是由類加載器從文件系統加載的,因爲類路徑恰好包含目錄,而不僅僅是jar文件。
我注意到我的問題是我的項目路徑本身有我的屬性文件,並且ClassLoader.getResource[AsStream]();
看起來是target/classes
文件夾,並且我的項目中沒有資源文件夾。
我解決它在我加入的資源文件夾到我的構建路徑,添加我的文件在src/main/resources
爲以下src/main/resources/foo/bar.properties
和SomeClass.class.getClassLoader().loadResourceAsStream("foo/bar.properties");
加載它。
- 1. 確定ISV目錄路徑的最佳方法是什麼?
- 2. 什麼是獲取資源路徑的最佳方式
- 3. 從python項目中檢索模塊路徑的最佳方式是什麼?
- 4. 將絕對路徑名轉換爲子路徑的最佳方法是什麼?
- 5. 從NSString中刪除路徑的最佳方法是什麼?
- 6. 什麼是Android更新項目中的路徑 - 路徑命令
- 7. 將相對路徑轉換爲絕對路徑的最佳方法是什麼?
- 8. 什麼是類路徑?
- 9. 最佳方式,如果一個目錄是另一個路徑的起點
- 10. 獲取相對於當前地址的路徑的最佳方式是什麼?
- 11. 確保Python中可靠路徑的最佳方法是什麼?
- 12. 解決文件路徑的最佳方法是什麼?
- 13. 防禦路徑穿越攻擊的最佳方法是什麼?
- 14. 如何指定DTD路徑從項目路徑在hibernate.cfg.xml採摘
- 15. 什麼決定了InstanceDir是全路徑還是相對路徑?
- 16. 什麼是Java2D中的路徑和子路徑?
- 17. 在java中使用文件路徑的最佳方式是什麼?
- 18. 在PHP中使用絕對路徑的最佳方式是什麼?
- 19. 使圖像在JQuery中循環路徑的最佳方式是什麼?
- 20. 驗證是否路徑指向另一個路徑給定目錄
- 21. 什麼是圖中的最小路徑?
- 22. 使用shell文件運行一個罐子,並指定類路徑和屬性文件路徑
- 23. 目錄路徑上的eval是什麼?
- 24. 螞蟻複製類路徑罐子到一個目錄
- 25. 爲什麼即使路徑包含@之前的路徑,路徑也能工作「\\」
- 26. 什麼是設計路線的最佳途徑?有多條路線是否好?
- 27. 類路徑中的遠程罐子
- 28. 確定路徑是本地路徑還是網絡路徑
- 29. 從類路徑中讀取多個ValidationMessages.properties
- 30. 這條路線的路徑是什麼?
感謝您的糾正,是的這意味着當前路徑不是類路徑 – SaleemKhair