Java 中的首选项



我会使用 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)

我该如何解决?

您需要

将字符串分解为首选项.MAX_VALUE_LENGTH的长度。 我建议你创建myValue.1,myValue.2等。这与myValue有关。加载后,您只需将值串在一起。

下面是一些代码:

    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);
   }

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

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

您可以将字符串切成几部分,因为例外情况是说您的字符串太长

有关如何以特定字符数拆分字符串的示例,请参见 Cut Java String 在多个字符处

if(str.length() > 50) //if the string length > 50
strOut = str.substring(0,50) //return substring from first character to 8 character
strOut2 = str.substring(51, str.length) //second part

相关内容

  • 没有找到相关文章

最新更新