一只风里 2021-09-28 14:25 采纳率: 42.9%
浏览 20

关于java序列化与反序列化的异常处理

异常截图

img

前提:我已经在项目目录下创建好stu.txt和tea.txt文件
出现这个异常不知道怎么处理

InputOutput类代码

package moudle;

import java.io.*;
import java.util.HashMap;

/*
文件操作类
 */
public class InputOutput implements Serializable{
    HashMap<Integer,Student> stuMap = null;
    HashMap<Integer,Teacher> teaMap = null;
    ObjectInputStream teaInput = null;
    ObjectInputStream stuInput = null;
    File stuFile = null;
    File teaFile = null;
    String stupath = null;
    String teapath = null;

    public void ReadByFile() throws IOException, ClassNotFoundException {

        try{
            stupath = new File("").getCanonicalPath()+"/stu.txt";
            teapath = new File("").getCanonicalPath()+"/tea.txt";
        }catch (Exception e){
            e.printStackTrace();
        }

        try {
            FileInputStream stu = new FileInputStream(stupath);
            FileInputStream tea = new FileInputStream(teapath);
            stuInput = new ObjectInputStream(stu);
            teaInput = new ObjectInputStream(tea);
        }catch (FileNotFoundException fileNotFoundException){
            fileNotFoundException.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            if(teaInput != null){
                teaMap = (HashMap<Integer,Teacher>)teaInput.readObject();
                stuInput.close();
            }
            if(stuInput != null){
                stuMap = (HashMap<Integer,Student>)stuInput.readObject();
                teaInput.close();
            }

        }

    }

    public void WriteToFile() throws IOException {
        ObjectOutputStream stuOut = null;
        ObjectOutputStream teaOut = null;
        try {
            stuMap = TeacherSystem.stuMap;
            teaMap = AdminSystem.teaMap;
            FileOutputStream stu = new FileOutputStream(stupath);
            FileOutputStream tea = new FileOutputStream(teapath);
            stuOut = new ObjectOutputStream(stu);
            teaOut = new ObjectOutputStream(tea);

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //将map集合里的信息写入文件中
            stuOut.writeObject(stuMap);
            teaOut.writeObject(teaMap);
            //释放资源
            stuOut.flush();
            stuOut.close();
            teaOut.close();

        }
    }
}


  • 写回答

1条回答 默认 最新

  • Tomshidi 2021-09-28 14:33
    关注

    根据readFully的源码产生异常的逻辑,当文档已经没有更多字节读取时就会报这个EOFException。

    img

    你代码中是不是循环读取的判断超过了最大数据量?

    评论

报告相同问题?

问题事件

  • 创建了问题 9月28日

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题