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 then break のようなことをしようとしましたが、それでも例外がスローされます。

4

1 に答える 1

0

API はすでに設計されています。仕組みを変えることはできません。IOException とは別に EOFException をキャッチし、ストリームを閉じてブレークします。IOException をキャッチしたら、エラーをログに記録し、ストリームを閉じて中断します。

于 2013-09-18T09:55:27.323 に答える