0

我正在保存并加载混合数据类型。我要么保存部分错误,要么加载部分错误。我正在使用缓冲串行保存和加载方法。变量 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
4

1 回答 1

1

您已将字符串写入 byte[],因此需要读取为 byte[]

    byte [] bString = new byte[lastFetchDate.length()*2];
    ois.readFully(bString, 0, bString.length);

或者,如果您使用writeObject 方法写入对象 ,那么您可以读取对象,

oos.writeObject(lastFetchDate);
于 2012-06-28T04:13:41.507 回答