Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的首选项_Java_Exception_Jar_Preferences - Fatal编程技术网

Java中的首选项

Java中的首选项,java,exception,jar,preferences,Java,Exception,Jar,Preferences,我会使用java首选项将对象存储在.jar中 我将我的对象转换成字符串并存储它 我使用以下代码保存它: Preferences.userNodeForPackage(Centrale.class).put("myValue", myString); 我使用以下代码来阅读: String myString = ""; myString = prefs.get("myValue", myString); 我在保存大字符串时发现一个错误。错误是: java.lang.IllegalArgument

我会使用
java首选项将对象存储在
.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\u VALUE\u 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);
   }
String value=“…”;
int size=value.length();
if(大小>首选项.最大值\长度){
cnt=1;
对于(int-idx=0;idx首选项最大值长度){
pref.put(key+““+cnt,value.substring(idx,idx+Preference.MAX_value_LENGTH));
idx+=首选项的最大值长度;
}否则{
pref.put(key+““+cnt,value.substring(idx));
idx=尺寸;
}
}
}否则{
pref.put(键、值);
}
密钥大小也有一个限制,即Preference.MAX_key_LENGTH


还有一点需要说明,您可以使用Preference keys方法重新创建对象。

这有助于我在Preference值中存储一个冗长的JSON字符串。
    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);
   }