Я хочу прочитать объект, созданный в моем файле, используя ObjectInputStream, но это дает исключение, что java.io.EOFException - PullRequest
0 голосов
/ 30 апреля 2018

Я успешно создал объект в файле, используя ObjectOutputStream, но когда я пытаюсь прочитать этот объект, он дает исключение. Пожалуйста, помогите, я не могу справиться с этим :: java.io.EOFException

public class ObjInputObjOutput {
    public static void main(String[] args) {
        FileInputStream fs;
        ObjectInputStream os;
        try{
            fs=new FileInputStream("C:\\Users\\MYPC\\Desktop\\temp.txt");
            os=new ObjectInputStream(fs);
         os.readObject();
         Student s=(Student) os.readObject();
           s.toString();
        }catch(Exception e){System.out.println(e);}
    }
    }
    class Student implements Serializable
    {
    int rno;
    String add;
    float cgpa;
    String name;
    public Student(int rno, String add, float cgpa, String name) {
        this.rno = rno;
        this.add = add;
        this.cgpa = cgpa;
        this.name = name;
    }
    public String toString()
    {
        return "Roll no:"+rno+"\n"+"Add"+add+"\n"+"Cgpa"+cgpa+"\n"+"Name"+name;
    } 
}

1 Ответ

0 голосов
/ 30 апреля 2018

Вы читаете объект и выбрасываете его:

os.readObject();

и затем пытается прочитать другой объект, которого там нет:

Student s=(Student) os.readObject();

, а затем преобразовать его в String и выбросить:

   s.toString();

Вам нужна только вторая из этих трех строк.

NB. Сериализированные данные не являются текстовыми и не должны храниться в файлах с расширением .txt. Вы также не должны использовать полные пути. Ваш домашний каталог не будет там на чужом компьютере.

...