8
我期待下面的代碼拋出一個異常,當我轉到數據寫入流:的Java的BufferedWriter,OutputStreamWriter能夠寫入封閉FileOutputStream中
File file = new File("test.txt");
FileOutputStream fs = new FileOutputStream(file);
OutputStreamWriter ow = new OutputStreamWriter(fs);
BufferedWriter writer = new BufferedWriter(ow);
fs.close();
try {
ow.write(65);
writer.write("test");
} catch (Exception e) {
e.printStackTrace();
}
我意識到,我應該關閉的BufferedWriter,但在我當前的環境,可能會在BufferedWriter關閉之前關閉FileOutputStream。 FileOutputStream不應該拋出一個IOException,它應該向上移動鏈,直到它碰到我的try/catch塊並打印堆棧跟蹤?
如果我嘗試調用fs.write(65),那麼它會拋出一個異常。
謝謝!不敢相信我沒有嘗試過,單元測試讓我如此專注,我有時候會想念那些明顯的。 – craineum 2010-03-16 20:06:30
但是爲什麼它不會在'ow.write(65)'處拋出異常呢? OutputStreamWriter不被緩衝。 – 2010-03-16 20:57:50
如果您閱讀OutputStreamWriter的javadoc(介紹),您會看到它也被緩衝。 – 2010-03-16 22:37:36