2 lovepd1122 lovepd1122 于 2016.04.25 08:50 提问

Java中从文件中读取ArrayList报错

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)

代码
import java.io.File;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class Data {
private File file=new File("e:"+File.separator+"message.txt");
private ObjectInputStream ois;
private ObjectOutputStream oos;
public ArrayList read() throws FileNotFoundException, IOException{
ArrayList list=new ArrayList();
ois=new ObjectInputStream(new FileInputStream(file));

    try {



        list=(ArrayList<Message>) ois.readObject();//报错的位置


        ois.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}
public void write(ArrayList<Message> list){
    try {
        oos=new ObjectOutputStream(new FileOutputStream(file));

        oos.writeObject(list);
        oos.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

4个回答

q610098308
q610098308   2016.04.25 09:07
已采纳

ois=new ObjectInputStream(new FileInputStream(file));
这一句返回值可能为空,或者是下一句无法读到东西;
强转崩溃;

caozhy
caozhy   Ds   Rxr 2016.04.25 09:06
 list=(ArrayList<Message>) ois.readObject();
不能这么转换,必须写
list=new ArrayList<Message>();
while((obj=ois.readObject())!=null) { 
                Message m = (Message)obj; 
                list.add(m);
            } 
u010646502
u010646502   2016.04.25 14:08

ois=new ObjectInputStream(new FileInputStream(file));

CSDNXIAON
CSDNXIAON   2016.04.25 09:01

Java dom读取XML文件中特殊字符-报错
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!