出现java.io.EOFException 求教!!
你断点调试一下,你的构造 方法里面的if(fips.read()==-1)里面的语句是得不到执行的。
所以,那个文件里面根本没有写入空的List,你用readObject去取就会出错。
我运行了一下,断点后,发现了一个错误:
在你load之前,你首先实例化了一个output,可能这里出错了。
下面是正常运行的,你自己对比下:
Person类我就没有贴了。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
class TestFile {
String f = null;
FileInputStream fips = null;
ObjectOutputStream oops = null;
public TestFile() throws Exception {
f = "d:" + File.separator + "resource.txt";
File fi = new File(f);
if (!fi.exists()){
fi.createNewFile();
oops = new ObjectOutputStream(new FileOutputStream(fi));
List
l = new ArrayList();
oops.writeObject(l);
oops.flush();
oops.close();
}
}
public void save(Object o) throws Exception {
@SuppressWarnings("unchecked")
List per = (List) this.load();
per.add((Person) o);
oops = new ObjectOutputStream(new FileOutputStream(f));
oops.writeObject(per);
oops.close();
}
public Object load() throws Exception {
ObjectInputStream oips = new ObjectInputStream(new FileInputStream(f));
@SuppressWarnings("unchecked")
List per2 = (List) oips.readObject();
oips.close();
return per2;
}
public static void main(String[] args) throws Exception {
TestFile f = new TestFile();
f.save(new Person("小明", 12));
f.save(new Person("小红", 11));
}
}java程序运行时,出现EOFException异常,但是为什么我捕获后编译器报错??
顺序错了。
写成catch (EOFException e) {
}catch(FileNotFoundException exc){
}catch( IOException ex){
}
就可以了。
java.io.EOFException怎么解决,同时文件怎么显示乱码
错误修正:
/*
* 数据的读取
*/
public void load(File file) {
// 文件输入流
FileInputStream inputStream;
DataInputStream input = null;
try {
inputStream = new FileInputStream(file);
// 数据输入流
input = new DataInputStream(inputStream);
// 读出
String tempname;
int temptime;
while (input.available() > 0 && (tempname = (String) input.readUTF()) != null) {
temptime = (int) input.readInt();
insert(tempname, temptime);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}java.io.EOFException这是个什么异常应该怎么解决
1,内部类BlockDataInputStream.的方法peekByte抛出的异常,意思就是到达了文件的末尾,程序却没有正常结束读取文件内容,你可以单步调试一下看看到达文件末尾之后程序为什么没有停下来
2,从异常来看,你是不是使用了一个内部类BlockDataInputStream?错误就在BlockDataInputStream.peekByte()方法.
java.io.EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常。
此异常主要被数据输入流用来表明到达流的末尾。