Сохранение строки сериализованного и буферизованного андроида 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);
Другие вопросы по тегам