Сохранение строки сериализованного и буферизованного андроида JAVA.IO ObjectInputStream
Я сохраняю и загружаю смешанные типы данных. У меня либо неверная часть сохранения, либо неверная часть загрузки. Я использую буферизованный последовательный метод сохранения и загрузки. Переменная lastFetchDate определяется как строка и инициализируется как "00/00/00". Выдает ошибку при перезагрузке данных после их сохранения. Что случилось? Я бы подумал, что противоположное writeBytes будет readBytes для строки.
Сохранение происходит следующим образом:
FileOutputStream fos = new FileOutputStream("userPrefs.dat");
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeBytes(lastFetchDate);
// I close all streams
Загрузка выглядит следующим образом:
FileInputStream fis = new FileInputStream("userPrefs.dat");
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(bis);
lastFetchDate=(String)ois.readObject(); //<<<<< Error thrown here
// I close all streams
1 ответ
Решение
Вы написали строку как byte[], поэтому нужно читать как byte[]
byte [] bString = new byte[lastFetchDate.length()*2];
ois.readFully(bString, 0, bString.length);
Или, если вы пишете как объект с использованием метода writeObject, то вы можете читать как объект,
oos.writeObject(lastFetchDate);