Java中的偏好设置
问题描述:
我会使用java preferences
将我的对象存储在.jar
中。Java中的偏好设置
我将我的对象转换为一个字符串,我存储它。
我使用此代码保存它:
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.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 at a number of character
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
太棒了!这是解决方案,谢谢! – user3253955 2014-12-19 16:58:39