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