2017-08-02 73 views
0

我在Eclipse以下封裝結構:的getResourceAsStream同時運行的.jar

prop.load(getClass().getResourceAsStream("file.properties")); 

BufferedReader br = new BufferedReader(new FileReader("src/file.properties")) 

MyProject 
|___ src 
    |___ package1 
    |___ file.properties 

我在2周不同的方式閱讀file.properties file.properties可以在runtine中修改,所以當我提供jar文件時,我建議用戶創建一個src文件夾jar文件的級別並將其放入其中。 然而,在我創作的罐子,我需要specificy src文件夾中的文件路徑:

prop.load(getClass().getResourceAsStream("src/file.properties")); 

同時通話的FileReader仍然有效。

如何設置一個通用文件路徑,能夠在兩種情況下工作(eclipse/development environmente和jar/production environment)?

謝謝

+1

您可以使用['FileInputStream'](https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html)當您使用'FileReader'獲取'InputStream'到文件,而不是使用'getResourceAsStream' – bracco23

回答

2

您可以添加外部src目錄在JAR的清單中Class-Path條目。這將使src目錄可以訪問getResource()

但是我不知道它在運行時如何改變那個目錄的內容 - 從未嘗試過。

FYI: 在Eclipse中閱讀文件「工作」一點點意外。如果你運行你的應用程序,Eclipse不會構建整個JAR並使用它。它只將java文件編譯爲.class文件並使用它們。整個應用程序仍然在文件系統上作爲普通的目錄和文件保存在JAR文件中,這就是爲什麼從文件中讀取的原因。

它不會在JAR文件(和內部資源)的情況下工作,因爲您無法直接從JAR(zip)壓縮文件讀取文件。如果你要以分解形式交付你的應用程序,它可以在客戶端工作,也可以在Eclipse中爲你工作(沒有額外的目錄)。

相關問題