关闭嵌套流
可能重复:
在Java中关闭嵌套流的最佳方法是什么?
我们如何关闭嵌套流? 关闭所有这些? 如果是,订单是什么?
FileOutputStream out = new FileOutputStream("data.txt", true); PrintWriter pout = new PrintWriter(out); /* do some I/O */ pout.close(); out.close();
或关闭大多数流将关闭所有这些。
pout.close(); // Is this enough?
关闭链接流时,只需关闭最外面的流。 任何错误都会在链中传播并被捕获。
看看这里 。 可能之前已经问过这个问题。
始终使用finally
块关闭资源:
acquire(); try { use(); } finally { release(); }
这里唯一的资源是FileOutputStream
,因此它是唯一真正需要关闭的资源。 如果要抛出PrintWriter
构造函数,那么你真的应该释放FileOutputStream
,这就排除了关闭PrintWriter
。
注意,你确实想要flush
PrintWriter
。 这只需要在非例外情况下完成,因此不需要最终。