Java - 如何发现用户更改了配置文件?

标签 java configuration config

我正在开发一个 Java 桌面应用程序。此应用需要配置才能启动。为此,我想为应用程序提供一个 defaultConfig.propertiesdefaultConfig.xml 文件,这样如果用户没有选择任何配置,那么应用程序将以defaultConfig 文件的帮助。

但我担心如果用户不小心编辑了 defaultConfig 文件,我的应用程序会崩溃。那么有没有什么机制可以让我在应用程序启动之前检查 config 文件是否已更改。

How other applications (out in the market) deal with this type of situation in which their application depends on a configuration file?


If the user edited the config file accidentally or intentionally, then the application won't run in future unless he re-installs the application.

最佳答案

我同意 David因为使用 MD5 哈希是完成您想要的事情的一种好而简单的方法。

基本上,您将使用 JDK(或其他地方)提供的 MD5 散列码来生成基于 Config.xml 中默认数据的散列码,并将该散列码保存到文件(或将其硬编码到执行检查的函数)。然后每次你的应用程序开始加载你保存到文件的哈希码,然后加载 Config.xml 文件并再次从中生成一个哈希码,将保存的哈希码与从加载的配置中生成的哈希码进行比较文件,如果它们相同则数据没有改变,如果它们不同则数据已被修改。

然而,正如其他人所建议的那样,如果文件不应由用户编辑,那么您应该考虑以用户无法轻松编辑的方式存储配置。我能想到的最简单的方法是将用于编写 Config.xml 文件的 Output Stream 包装在 GZIP Output Stream 中。这不仅会给用户编辑配置文件带来困难,还会导致Config.xml文件占用更少的空间。

关于Java - 如何发现用户更改了配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427038/

相关文章:

javascript - config.codekit 恢复未检查输出/编译的 JS 文件

java - 如何使用 Java 将错误消息移动到 Azure 死信队列?

java - 从结果集中的元数据获取表名称时遇到问题

Spring Security 自定义 PermissionEvaluator 配置无法正常工作

jenkins - Jenkins config.xml 在哪里?以及为什么会出现这个错误呢?

database - Kohana - 每个环境的数据库配置

java - 在正文中忽略参数时编写 lambda 表达式

java - Firebase 通知 - 如何设置通知语言?

configuration - 如何获取TeamCity中项目依赖的checkout目录?

configuration - 如何在多个maven项目之间共享公共(public)属性?