그래서 개체 스트림에서 해시 맵을 저장하거나로드하는 데 문제가 있습니다. 파일이 저장되고 어떤 정보를 저장하는 것을 볼 수 있습니다. 문제는 해시 맵을 읽으려고 할 때 EOF 오류가 발생합니다. 당신의 도움에 미리 감사드립니다.eofExeption with objectstream 및 hashmap
public synchronized void store(StoredObject storedObject) {
try {
String objectName = storedObject.getObject().getClass().getName();
File file = new File(LOCAL_STORAGE_PATH + objectName);
boolean isNewFile = !file.exists();
output = new ObjectOutputStream(new FileOutputStream(file));
input = new ObjectInputStream(new FileInputStream(file));
if (isNewFile) {
localStorage = new HashMap<String, StoredObject>();
} else {
/////////////////////////
////does not work ///////
/////////////////////////
localStorage = (HashMap) input.readObject();
}
localStorage.put(storedObject.getKey(), storedObject);
output.writeObject(localStorage);;
output.flush();
} catch (IOException ex) {
//Logger.getLogger(LocalServer.class.getName()).log(Level.SEVERE, "ioexception", ex);
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
Logger.getLogger(LocalServer.class.getName()).log(Level.SEVERE, "class missmatch", ex);
}
finally{
try {
output.close();
input.close();
} catch (IOException ex1) {
Logger.getLogger(LocalServer.class.getName()).log(Level.SEVERE, "could not close connection", ex1);
}
}
}
오류 메시지 : java.io.ObjectInputStream.readObject0에서 java.io.ObjectInputStream의 $ BlockDataInputStream.peekByte (ObjectInputStream.java:2601) (ObjectInputStream에에서
java.io.EOFException . java : 1319) (java.io.ObjectInputStream.readObject (ObjectInputStream.java:371) , ServiceLayer.LocalServer.LocalServer.store (LocalServer.java:66) at ServiceLayer.LocalServer.LocalServerTEST.main (LocalServerTEST.java : 17)
나는 시도했다 : 그것 syncronized하게. 객체 (StoredObject)와 하위 객체는 직렬화 가능합니다.