2014-12-19 2 views
4

Я бы сохранил свой объект внутри .jar, используя java preferences.Предпочтения в 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) 

Как я могу ее решить?

ответ

5

Вам нужно будет разбить 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); 
    } 

Существует также ограничение на размер ключа, который Preference.MAX_KEY_LENGTH.

Еще один момент заключается в том, что вы можете использовать метод ключей предпочтений для воссоздания вашего объекта.

+0

Отлично! Это решение, спасибо! – user3253955

1

Вы можете сократить строки в части, как исключение говорят, что ваша строка слишком длинная

пример в том, как разбить строку на определенное количество символов можно найти на 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 
Смежные вопросы