0

这就是我写出我的文件的方式。

    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 然后休息的事情,但无济于事,我仍然抛出异常。

4

1 回答 1

0

API 已经设计好了。你无法改变它的工作方式。将 EOFException 与 IOException 分开捕获,关闭流,然后中断。当您捕获 IOException 时,记录错误、关闭流并中断。

于 2013-09-18T09:55:27.323 回答