Java在属性文件中查找具有特定值的键

时间:2014-06-16 19:03:21

标签: java file properties key

所以基本上我有一个程序,您可以通过键入信息然后单击添加帐户来添加帐户,然后将帐户保存在带有ID的属性文件中,以区别于其他键(ID增加一个添加帐户的时间)并显示JComboBox的用户名,以便您可以选择帐户。问题在于删除帐户。我可以轻松地在组合框中获取文本并删除组合框中的项目,但是我无法从JComboBox上的所选项目中获取该帐户的ID,因此我可以在属性文件中删除它们的键。这是我的属性文件的示例:account1 = username; password 帐户2 = user135; pass123

所以我想到这个问题的解决方案(但我不知道怎么做)是从选定的JComboBox获取用户名文本并搜索值等于用户名的密钥,然后删除该密钥。这可能吗?如果没有,我可以通过其他方式获得帐户ID吗?

编辑:我了解到sqlite是一种更好的存储帐户数据的方式 - 感谢答案:)

1 个答案:

答案 0 :(得分:2)

这里有几件事。

首先也是最重要的: 我真的希望你不是用纯文本保存用户的密码。这是非常糟糕的安全措施。我希望你至少用盐腌它们。此外,如果发生这种情况,您仍然会遇到如何将其发送到服务器以验证它是否是正确密码的问题(如果这应该是自动登录)。您可以改为加密密码。

您可能需要考虑使用SQLite作为保存帐户信息的数据库。请注意,您仍应对密码进行哈希处理或加密。

如果你必须使用属性文件,我可能会考虑使用不同形式的数据将所有数据组合在一起。例如XML或JSON。

accounts = [{"un":"username1", "pw":"password1"}, {"un":"username2", "pw":"password2"}]

如果这对你不起作用,并且你喜欢每个帐户的单独属性的想法,那么考虑使用HashMap将帐户名存储到属性变量。当您保存数据或加载数据时,您将执行以下操作:

//defined somewhere
HashMap<String, String> accountToProperty;

accountToProperty.put("username1", "account1");
accountToProperty.put("username2", "account2");