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 に答える