为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 Java 将布尔首选项存储到 Windows 10 注册表,而整数和字符串已正确存储

无法从 Java 将布尔首选项存储到 Windows 10 注册表,而整数和字符串已正确存储

HUH函数 2022-10-20 15:06:08
我正在使用https://www.vogella.com/tutorials/JavaPreferences/article.html中的示例和以下代码:import java.util.prefs.Preferences;public class PreferenceTest {  private Preferences prefs;  public void setPreference() {    // This will define a node in which the preferences can be stored    prefs = Preferences.userRoot().node(this.getClass().getName());    String ID1 = "Test1";    String ID2 = "Test2";    String ID3 = "Test3";    // First we will get the values    // Define a boolean value    System.out.println(prefs.getBoolean(ID1, true));    // Define a string with default "Hello World    System.out.println(prefs.get(ID2, "Hello World"));    // Define a integer with default 50    System.out.println(prefs.getInt(ID3, 50));    // now set the values    prefs.putBoolean(ID1, false);    prefs.put(ID2, "Hello Europa");    prefs.putInt(ID3, 45);    // Delete the preference settings for the first value    prefs.remove(ID1);  }  public static void main(String[] args) {    PreferenceTest test = new PreferenceTest();    test.setPreference();  }}以下是后续运行的输出:1)初始运行以保存首选项:true 2019 年 4 月 23 日晚上 10:56:22 java.util.prefs.WindowsPreferences Hello World 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回错误代码 5. 502)第二次运行已经读取了第一次运行时写入的值:true 2019 年 4 月 23 日晚上 10:56:57 java.util.prefs.WindowsPreferences Hello Europa 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回错误代码 5. 45您可能会注意到 int 和 String 值被很好地检索并且没有被默认值替换,而布尔值没有被检索并且被替换为默认值(即两个输出都在那里给出 true 而期望是实现 false在第二次运行)。
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我在这里错了:我错过了从首选项中删除 ID1 密钥的事实:

// Delete the preference settings for the first value
    prefs.remove(ID1);

如果我将其注释掉,一切都会按预期进行。


查看完整回答
反对 回复 2022-10-20
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信