簡體   English   中英

如何從本地目錄而不是Java中的JAR加載resources.properties?

[英]How to load resources.properties from local directory, not the JAR in Java?

我有一個使用Guice和JavaFX的Java應用程序,它需要可配置的資源。

我正在嘗試使用https://github.com/dueni/faces-ext/blob/master/resourcebundle/src/main/java/ch/dueni/util/MultiplePropertiesResourceBundle.java加載多個資源

我可以從JAR加載兩個資源文件,但是我希望能夠從用戶有權修改它們的本地目錄中加載它們。

我曾嘗試將它們發送到AppData,但我希望該文件在安裝文件夾等位置更具可配置性。 我也不知道是否有可能從包外部加載屬性文件。

當前,這是使用ClassLoader加載資源的方法:

      ClassLoader cl = Thread.currentThread().getContextClassLoader();
      List<String> bundleNames = new ArrayList<String>();
      try {
         String baseFileName = baseName + ".properties";
         String resourcePath = getResourcePath();
         String resourceName = resourcePath + baseFileName;
         if (isLoggable) {
            LOG.logp(Level.FINE, CLASS, METHOD, "Looking for files named '" + resourceName + "'");
         }
         Enumeration<URL> names = cl.getResources(resourceName);

我希望能夠通過自定義函數獲取名稱,該自定義函數在指定目錄中搜​​索資源文件。

反正有可能嗎?

是的,這是可能的。 希望我能正確理解您的問題。

1)使用所需的路徑創建文件,例如:

settingsFile = new File(System.getProperty("user.home") + "/{Project}/settings.xml");
settingsFile.getParentFile().mkdirs();
settingsFile.createNewFile();

該路徑指向用戶的默認目錄(對我來說,是C:\\ users \\ meiswjn {Project}),但是您可以使用任何目錄。

2)使用properties.put(..)設置默認值。

3)保存屬性。

FileWriter fileWriter = new FileWriter(settingsFile);
BufferedWriter propWriter = new BufferedWriter(fileWriter);
props.store(propWriter, "Comment");
propWriter.close();
fileWriter.close();

4)您可以通過以下方式讀取屬性:

FileReader fileReader = new FileReader(settingsFile);
BufferedReader reader = new BufferedReader(fileReader);
props.load(reader);
fileReader.close();
reader.close();

希望這可以幫助。

暫無
暫無

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

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