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

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

我使用以下代码进行保存:

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。

还有一点是,您可以使用“首选项”键方法来重新创建对象。

10-06 09:28