在Java

时间:2015-09-07 01:05:51

标签: java properties io preferences

到目前为止,我已经看到我可以通过以下方式保存它们:

  1. 首选项类 - 我喜欢它,但它需要Windows中的管理员权限才能进行注册表编辑
  2. 属性类 - 这似乎对存储数据很有用。我还看到我可以从jar中加载一个文件:
  3. inputStream = Main.class.getResourceAsStream("config.properties");

    然而 - 一旦我加载它(如果我错了请纠正我)不能编辑它。无法以编程方式编辑jar内的文本文件。相反,我应该使用它将它保存到与.jar相同的目录:

    File newFile = new File("config.properties");
    OutputStream os = new FileOutputStream(newFile);
    properties.store(os, "Properties File");
    

    只要文件是名为Main的类。

    1. 第三种方式与第二种方式基本相同,但是从硬编码默认值加载而不是从txt文件加载。
    2. 如果你知道另一种在程序中加载设置的方法,请告诉我。请澄清一下 - 基本上,用户没有在他的jar旁边找到一个用于保存属性的讨厌文件的唯一方法是让我使用Preferences。当然,考虑到我们不能将绝对路径视为不同的操作系统将是一个问题。

2 个答案:

答案 0 :(得分:2)

Apache有一个很好的commons配置库来处理配置: https://commons.apache.org/proper/commons-configuration/ 如果您最终需要更多配置,或者如果您要维护多个应用程序并希望使用通用方法来处理不同类型的配置文件,那么这将是一件好事。

但是,如果您正在寻找的是为每个用户存储一些属性,我只会使用Properties类并将每个相应用户的数据存储在其user.home目录下的文件中您的应用名称 .properties。这样一个用户的数据就不会与另一个用户发生冲突,用户在user.home中拥有写权限的可能性非常大。 User.home绝对可以在比Windows更多的系统中使用 - 它是为linux / unix环境设置的,因此它也适用于Mac OSX。

如果您还没有数据库,我不会介绍一个只是存储一些用户首选项。

答案 1 :(得分:0)

    只要用户正在编辑他/她自己的Java首选项,
  • regedit.exe就不需要管理员权限。
  • 如果您的Properties文件包含配置,请将它们保存在jar之外。最好在当前工作目录或System.getProperty("user.home")
  • Apache Commons配置:https://commons.apache.org/proper/commons-configuration/