2016-01-24 9 views
0

Написал простой кусок кода, который сериализует стандартный объект сотрудника и десериализует его на той же машине из другого класса. Обе программы скомпилировали и выполнили поток вывода Obj для создания сериализованного объекта.java.io.EOFException при чтении объекта через ObjectInputStream

Проблема с десериализацией. Программа при запуске дает исключение EOF. Вот код, я использую:

Serialize-

import java.io.*; 
public class OOStreamDemo{ 

public static void main(String []a){ 

Employee e = new Employee("Abhishek Yadav", 'i', 10014); 
FileOutputStream fout = null; 
ObjectOutputStream oout = null; 
try{ 
fout = new FileOutputStream("emp.ser"); 
oout = new ObjectOutputStream(fout); 

} catch(Exception ex1){ 
System.out.println(oout); 
    ex1.printStackTrace(); 

} 


finally{ 

try{ 
oout.flush(); 
oout.close(); 
fout.close(); 
} catch(IOException ex2){ 
    ex2.printStackTrace(); 

} 
} 
} 
} 

Deserialize -

import java.io.*; 
public class OIStreamDemo{ 
public static void main(String []a){ 

System.out.println("Inside main"); 

FileInputStream fin = null; 
ObjectInputStream oin = null; 
Employee emp; 

try{ 
System.out.println("Inside try"); 
fin = new FileInputStream("emp.ser"); 
oin = new ObjectInputStream(fin); 
System.out.println("Streams Initialized"); 
while((emp = (Employee)oin.readObject()) != null) 
    { 

System.out.println(emp.toString()); 
    } 
System.out.println("Object read"); 
//System.out.println("Read object is " + emp); 
//System.out.println("Obj props are "+ emp.name); 

} catch(Exception e){ 

    e.printStackTrace(); 
} 

} 

} 

Это printStackTrace:

Inside main 
Inside try Streams 
Initialized 
java.io.EOFException 
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2598) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1318) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
at OIStreamDemo.main(OIStreamDemo.java:16) 

Спасибо.

ответ

3

Вы не писал Employee объект в ObjectOutputStrem поэтому добавить

oout.writeObject(e); 
+0

Спасибо много !! Понял, что я должен был быть более осторожным, когда я напишу код – Abhi

+0

, может кто-нибудь ответить на этот вопрос? http://stackoverflow.com/questions/37507890/java-io-eofexception-when-reading-weka-trained-model-file – CraZyDroiD

Смежные вопросы