BufferedOutputStream
で作業している間に、ストリームを閉じた後に書き込んだときにIOException
をスローしません。BufferedOutputStreamがI/O例外をスローしない
私の結果を確認するには、FileOutputStream
が、それを閉じた後でそれに書き込もうとしたら、IOException
を投げていることがわかりました。
public class Test {
public static void main(String[] args) {
try {
// Created a byte[] barry1 barry2
byte[] barry1 = { '1', '3' };
byte[] barray2 = { '2', '4' };
OutputStream os = new BufferedOutputStream(
new FileOutputStream("abc.txt", false));
// Writing to stream
os.write(barry1);
os.close();
os.write(barray2); // this suceeds - bug
os = new FileOutputStream("abc.txt", true);
//Writing to stream
os.write(barry1);
os.close();
os.write(barray2); // crashes here, correct.
} catch (Exception e) {
e.printStackTrace();
}
}
}
なぜこの動作が異なるのですか? os.write(c);
後のコールフラッシュ、それは例外がスローされますので、もし
いいえ、私は、 'FileOutputStream'ではなく*が*閉じているときに' BufferedOutputStream'に書き込むと例外がスローされないことはまだ驚きです。OPが 'FileOutputStream'を閉じているのかどうかは分かりましたが、' BufferedOutputStream'にもチェックがあると思います。 –
@JonSkeetから好意的なコメントをいただきました。:) –