如何从本地目录而不是Java中的JAR加载resources.properties?

时间:2019-09-06 12:46:00

标签: java javafx guice

我有一个使用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 个答案:

答案 0 :(得分:0)

是的,这是可能的。 希望我能正确理解您的问题。

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();

希望这会有所帮助。