java.io.EOFException异常处理

在读取文件中对象时遇到java.io.EOFException异常 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class ReadFromFile {

    public static ArrayList<Student> readFromFile() {
        ObjectInputStream ois = null;
        File f = new File ("d:\\student.txt");
        ArrayList<Student> st = new ArrayList<Student> ( );
        try {
            FileInputStream fis = new FileInputStream (f);
            //文件不存在创建文件
            if (!f.exists ( )) {
                f.createNewFile ( );
            }
            ois = new ObjectInputStream (fis);
            Student[] students = (Student[]) ois.readObject ( );
            for (Student s : students
            ) {
                // System.out.println (s );
                st.add (s);
            }
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace ( );
        } finally {
            if (null != ois) {
                try {
                    ois.close ( );
                } catch (IOException e) {
                    e.printStackTrace ( );
                }
            }
        }
        return st;
    }

}

异常原因:因文件为空,输入流未读取到任何数据

解决方法:加判断条件,如果文件大小为0 则不读取文件内容,增加代码如下:

 if (f.length ( ) == 0) {
                fis.close ();
                return st;
            } else {
                ois = new ObjectInputStream (fis);
            }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值