这就是我写出文件的方式。
BufferedReader read = new BufferedReader(new FileReader(filetoreadfrom));
FileOutputStream fileStream = new FileOutputStream(filetowriteto);
DataOutputStream dataStream = new DataOutputStream(fileStream);
String temp;
while((temp = read.readLine()) != null){
String[]arrayTemp = temp.split("\|");
dataStream.writeInt(Integer.parseInt(arrayTemp[0]));
dataStream.writeInt(Integer.parseInt(arrayTemp[1]));
dataStream.writeUTF(arrayTemp[2]); }
所以我正在尝试写出一个二进制文件,它似乎工作正常。但是当我试图读回它时,我最终得到了IOExceptions。
这就是我在文件中的阅读方式。
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("data.bin")));
int one,two,eight;
String three,
while(true){
one = in.readInt();
two = in.readInt();
three = in.readUTF();}
我一直在查看数据流的教程页面
http://docs.oracle.com/javase/tutorial/essential/io/datastreams.html
根据我在示例中的理解,它显示了通过捕获 EOFException 来捕获文件条件的末尾?从我从 API 中看到的,这是 IOException 的一个子类,这有助于我理解为什么我会得到它。
我不明白的是如何处理它而不会发生异常。我尝试做类似 in.read() == -1 然后中断的事情,但无济于事,我仍然会抛出异常。
API 已经设计好了。您无法更改其工作方式。将EOFException与IOException分开捕获,关闭流,然后中断。捕获 IOException 时,记录错误,关闭流,然后中断。