1
프로그램을 실행할 때마다 파일에 같은 개체를 직렬화하려고합니다. 이것은 내 문제를 설명하는 간단한 알고리즘입니다.예외 StreamCorruptedException : 유효하지 않은 형식 코드 : AC
나는 여기서 String
을 writer
에 저장합니다. 마지막으로 파일을 읽었습니다. 이 프로그램의 목표는 내 프로그램 X 시간을 실행하면 저장하고 화면 X 시간에 내 개체를 인쇄하는 것입니다. 내가이 프로그램을 실행하면
class ReadFile {
static ObjectOutputStream writer = null;
public static void main(String[] args) throws IOException, ClassNotFoundException {
writer = new ObjectOutputStream(new FileOutputStream("trace", true));
store("String");
if (writer != null) {
writer.close();
}
open("file.tmp");
}
static public void store(String chaine) {
if (writer == null) {
return;
}
try {
writer.writeObject(chaine);
} catch (IOException ex) {
}
}
static public void open(String file) throws FileNotFoundException, IOException, ClassNotFoundException {
StringBuilder str = new StringBuilder();
ObjectInputStream objs;
try {
objs = new ObjectInputStream(new FileInputStream(file));
try {
while (true) {
Object obj = objs.readObject();
str.append(obj.toString());
}
} catch (EOFException ex) {
}
objs.close();
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
}
난이 오류가 있습니다
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at ReadFile.open(ReadFile.java:47)
at ReadFile.main(ReadFile.java:35)
내가 무엇을하시기 바랍니다 할 수 있습니까?
예외를 잡아 버리고 그냥 버리는 것이 아니라 문제를 지적하고 유용한 정보가 있는지 확인해야합니다. 또한이 코드의 35 번째 줄은 무엇입니까? – DaveRlz
라인 35는 다음과 같습니다 :'open ("file.tmp");' – Mehdi
먼저 모든 객체를리스트로 읽어 들이고 추가하고자하는 객체를 추가 한 다음 파일에 다시 쓰지 않는 것이 어떻습니까? 나는 그것이 시간이 많이 걸리고 일을하는 것을 알고 있지만 내 경우에는 효과가 있었다. 여기를 봐 [링크] (http://stackoverflow.com/questions/1194656/appending-to-an-objectoutputstream) – saikumarm