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