【发布时间】:2015-02-24 16:40:09
【问题描述】:
我已经知道 Java 的 java.util.Properties。这个类的唯一缺点是它似乎需要将设置存储在外部文件中。据我所知,C# 的 Settings 类将所有数据存储在实际的可执行文件中。 是否可以在执行的 jar 文件中存储可读写的数据?
【问题讨论】:
-
有没有可能在执行的jar文件中存储可读写的数据?是的,有可能。但我强烈建议你不要这样做。 jar 文件是一种 zip 文件,修改 zip 文件中的数据很棘手(我认为您必须编写一个类加载器来重新加载它)。
-
java.util.prefs是另一种选择——仍然不在 JAR 文件中,而是在某些系统管理的位置(在 Windows 中,这是注册表;在 Linux 上,我认为它在用户的主目录)。有一个内置的导出到 XML 工具,用于在系统之间移动设置。 -
@JeffreyBosboom 是对的。尽管
java.util.prefs.Preferences也可能在 Windows 下使用 XML 文件,这对于不允许更改注册表的受限 Windows 帐户可能很有用。一种常见的做法是在主文件夹中使用.myapp文件夹:System.getProperty("user.home")。 -
@ElliottFrisch 我知道我可以使用 WinRAR 打开 JAR 文件。是否可以在代码中将 JAR 文件视为 ZIP 文件,以便我能够将带有序列化设置/数据的文件附加到存档中?
-
没有。您不能“附加”到 LZW 存档中的文件;他们不是这样工作的。基本上,您可以这样做,但您必须在
ZipEntry(在 Java API 中)中一次压缩整个文件,或者将文件添加到存档中。