【发布时间】:2016-04-09 21:56:12
【问题描述】:
我正在制作一个带有简单 GUI 的程序,用户必须在开始使用该程序之前进行登录。 我想存储用户名和密码,如果用户选中“记住我”复选框,我希望他下次不需要输入数据。 我尝试使用 Java Preferences API,这样:
private Preferences prefs = Preferences.userRoot().node(this.getClass().getName());
prefs.put("codCliente", txtCodCliente.getText());
prefs.put("username", txtUsername.getText());
prefs.put("password", DigestUtils.md5Hex(String.valueOf(txtPassword.getPassword())));
但是如果我关闭并重新打开应用程序,如果我打印变量的内容,它会返回“Null key”NullPointerException。
我尝试将它们保存在 .properties 文件中,但我不想每次都覆盖整个文件,如果我尝试使用 apache commons 配置,使用 setProperty,我无法将值放在变量。
存储此类数据的最佳方式是什么?
谢谢大家。
【问题讨论】:
-
您可以在用户登录时为其分配时间戳。如果他们点击记住我,只需分配 1 天的持续时间,直到过期。
-
你应该使用
Preferences.userNodeForPackage(MyClass.class),而不是userRoot().node(this.getClass().getName())。始终使用类文字(如MyClass.class)而不是 getClass(),因此继承不会导致首选项存储在您未预料到的位置。 -
@piyush121 问题是我在关闭应用程序时无法保存数据。
-
@VGR 试过了,但不保存数据
标签: java preferences