Java中的首选项

use*_*955 4 java jar exception preferences

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

我将我的对象转换为String并存储它.

我用这段代码来保存它:

Preferences.userNodeForPackage(Centrale.class).put("myValue", myString);
Run Code Online (Sandbox Code Playgroud)

我用这段代码来读它:

String myString = "";
myString = prefs.get("myValue", myString);
Run Code Online (Sandbox Code Playgroud)

我保存一个大字符串时发现错误.错误是:

java.lang.IllegalArgumentException: Value too long
java.util.prefs.AbstractPreferences.put(AbstractPreferences.java:245)
Run Code Online (Sandbox Code Playgroud)

我怎么解决呢?

小智 7

您需要将String拆分为Preference.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);
   }
Run Code Online (Sandbox Code Playgroud)

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

还有一点要做的是,您可以使用Preference键方法重新创建对象.