我正在开发一个 Java 桌面应用程序
。此应用需要配置
才能启动。为此,我想为应用程序提供一个 defaultConfig.properties
或 defaultConfig.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/