在 java 和 javafx 中保存应用程序设置

Posted

技术标签:

【中文标题】在 java 和 javafx 中保存应用程序设置【英文标题】:save application setting in java & javafx 【发布时间】:2018-04-08 18:20:16 【问题描述】:

我对这个主题非常陌生,并试图获得一些理解。我正在编写一个应用程序,允许用户对其进行个性化并创建他/自己的偏好,例如字体颜色、大小、某些节点的位置等。在进行研究时,我发现了几个使用 xml 文件来存储用户偏好的示例.

这是存储信息的最佳方式吗?有没有更安全的方法来做到这一点?因为 xml 文件对人来说是可读的,而不仅仅是机器。

【问题讨论】:

我认为您希望它至少在某种程度上具有人类可读性,如果仅用于故障排除目的。如果您真的希望它不可读,请将您的所有首选项数据序列化,并使用 ObjectInputStream 和 ObjectOutputStream 来读取和写入它。就个人而言,我总是使用 XML 来存储用户应用程序设置,或者如果所有设置都不重要,则使用 Preferences。 让它不可读,当然,它并不安全。如果您想保护文件,您应该在文件系统级别执行此操作,例如通过将文件写入只有特定用户有权访问的目录。 【参考方案1】:

如果您需要保存更多的用户信息,可以使用数据库。 但是如果你需要保存一个用户信息,你可以使用 Preferences :

Preferences pref;
pref = Preferences.userNodeForPackage(yourClass.class);
pref.put("yourPreferenceName","yourPreferenceValue");
//This create a String preference if it not exists or modify the value if 
//exists

Preferences pref;
pref = Preferences.userNodeForPackage(yourClass.class); 
String preference = pref.get("yourPreferenceName","yourPreferenceValue");
//This give you the value of the preference

如果您想了解更多有关偏好的信息,请转至here。

【讨论】:

以上是关于在 java 和 javafx 中保存应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章

在java和javafx中保存应用程序设置

Java Swing 保存和加载工作区/设置

java类中为啥设置set和get方法操作属性

在 Java 中保存用户设置/数据库/缓存...(在每个操作系统上)

java中get和set方法为啥get在前

java的get和set方法