几天前,我问了一个关于从文件读取直到输入完成的问题。我收到了一些我研究过的回复,但我有一个与该主题相关的问题:为什么我必须使用一些额外的测试、“finally”子句和另一个 try-catch ,而不仅仅是:
DataInputStream reading = null;
try{
reading = new DataInputStream(new FileInputStream("tes.t"));
while(true)
{
System.out.println(reading.readInt());
System.out.println(reading.readDouble());
}
}catch(IOException xxx){System.err.println("Error: " + reading.getMessage());}
catch(EOFException xxx){reading.close();}
为什么这还不够?我的意思是 - 一旦我们到达 EOF,我们就会有一个例外。否则,我们捕获异常并打印错误消息。为什么我们需要额外的测试?这种方法有什么问题?
编辑:好的,我现在明白为什么这是一件坏事。但是,如果我编写这样的代码呢:
DataInputStream reading = null;
try{
reading = new DataInputStream(new FileInputStream("tes.t"));
while(reading.available()!=0)
{
System.out.println(reading.readInt());
System.out.println(reading.readDouble());
}
}catch(EOFException xxx){}
catch(IOException xxx){System.err.println("Error: " + reading.getMessage());}
检查 reading.available() 的值是对输入端更好的测试还是同样糟糕?