java - Java 中的首选项

标签 java exception jar preferences

我会使用 java preferences 将我的对象存储在 .jar 中。

我将我的对象转换为字符串并存储它。

我用这段代码来保存它:

Preferences.userNodeForPackage(Centrale.class).put("myValue", myString);

我用这段代码来阅读它:

String myString = "";
myString = prefs.get("myValue", myString);

我在保存大字符串时发现错误。错误是:

java.lang.IllegalArgumentException: Value too long
java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:245)

我该如何解决?

最佳答案

您需要将字符串分成 Preference.MAX_VALUE_LENGTH 的长度。我建议您创建与 myValue 相关的 myValue.1、myValue.2 等。加载时,您只需将值串在一起。

这是一些代码:

    String value = "....";
    int size = value.length();
    if (size > Preference.MAX_VALUE_LENGTH) {
      cnt = 1;
      for(int idx = 0 ; idx < size ; cnt++) {
         if ((size - idx) > Preference.MAX_VALUE_LENGTH) {
           pref.put(key + "." + cnt, value.substring(idx,idx+Preference.MAX_VALUE_LENGTH);
           idx += Preference.MAX_VALUE_LENGTH;
         } else {
           pref.put(key + "." + cnt, value.substring(idx);
           idx = size;
         }
      }
   } else {
      pref.put(key, value);
   }

key 大小也有限制,即 Preference.MAX_KEY_LENGTH。

还有一点需要说明,您可以使用首选项键方法重新创建对象。

关于java - Java 中的首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27558399/

相关文章:

java - 从 Firefox 扩展的 Javascript 访问 Java 类时遇到问题

c++ - 如何强制中断方法的执行

java - Spring 版本变更导致 RESTful 功能中断

exception - 这些 MS DTC 异常是什么意思?

java - 从不同的类加载面板

java - 如何从依赖的 jar 中找到本地资源?

jar - Lucee 5.0 中的 Docx4j 库

java - 创建 jar 文件时没有这样的 list 文件文件或目录,并且没有主 list 属性

java - 导入证书出错?

java - 使用resttemplate解析json