首页 > 解决方案 > 我想使用 ObjectInputStream 读取在我的文件中创建的对象,但它给出了 java.io.EOFException 异常

问题描述

我已经使用 ObjectOutputStream 在文件中成功创建了一个对象,但是当我尝试读取该 obj 时,它给出了一个异常。请帮助我无法处理这个::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;
    } 
}

标签: javaserializationjava-ioeofexception

解决方案


您正在读取对象并将其丢弃:

os.readObject();

然后尝试读取另一个不存在的对象:

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

然后将其转换为 aString并将其丢弃:

   s.toString();

您只需要这三行中的第二行。

注意序列化数据不是文本,不应存储在扩展名为“.txt”的文件中。您也不应该使用完整的路径名。您的主目录不会在其他人的计算机上。


推荐阅读