java - 我想使用 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;
}
}
解决方案
您正在读取对象并将其丢弃:
os.readObject();
然后尝试读取另一个不存在的对象:
Student s=(Student) os.readObject();
然后将其转换为 aString
并将其丢弃:
s.toString();
您只需要这三行中的第二行。
注意序列化数据不是文本,不应存储在扩展名为“.txt”的文件中。您也不应该使用完整的路径名。您的主目录不会在其他人的计算机上。
推荐阅读
- java - 通过远程 JVM 在 Intellij IDEA 中进行 Maven 调试不会通过 Step Over/Into btns 遍历代码
- sorting - 苏禄智能字段类型排序顺序?
- react-native - React-Native:文本在不同手机中呈现不同
- kubernetes - GKE 单 ip 负载平衡器重叠端口
- python - 为什么在使用 pymysql 时必须重新连接数据库才能获取更新的数据库数据?
- python - 在 Api URL 中如何在 Django 中增加页码
- javascript - 使用节点 js 过滤对象键和值
- javascript - bootstrap 4手风琴在角度项目中动态加载
- google-cloud-platform - 使用 DataflowTempleOperator 的 Composer Dataflow 作业错误
- r - 从 Rstudio 连接到 SQL 数据库时出错