簡體   English   中英

Java從jar中的資源重新加載文本文件

[英]Java reloading text file from resources within jar

我有一個標准的Maven項目:

src/

| --- main/*.java

| --- resources/

    |--- settings1.ini

    |--- settings2.ini

這就是我讀取此設置文件的方式:

InputStream settingsFileInputStream = ClassLoader.getSystemResourceAsStream(this.configurationFileName);

一切正常,但是當我運行maven編譯的.jar文件時,我必須提供在運行時重新加載這些settings1.inisettings2.ini文件的功能。 我怎樣才能做到這一點?

因為據我所知,我無法訪問.jar存檔中的任何數據並對其進行修改。

您可以使用使用ClassLoader.getResourceAsStream(resourcePath)打開的流來訪問應用程序的JAR文件之一中的文件(假定它在類路徑中ClassLoader.getResourceAsStream(resourcePath)

但是,您無法更新JAR文件中的文件。 或更准確地說:

  • 更新JAR(使用Java SE庫)需要重寫它,

  • 許多情況下,應用程序將無法寫入其JAR文件,

  • 即使可以做到,應用程序也只能在重新啟動后才能看到更新結果,並且

  • 對於應用程序出於各種原因(包括安全性)以這種方式進行自我更新是一個壞主意。


如果您希望文件可更新,我建議采用以下方法:

  1. 為用戶計算機上的文件選擇一個標准位置; 例如,在Linux上,您可以選擇當前用戶主目錄的隱藏子目錄。

  2. 啟動應用程序時,請查看文件是否存在,以及是否不從JAR文件中的副本填充文件。

  3. 當應用程序隨后需要讀取或更新文件時,請在上述位置讀取或更新文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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