关闭嵌套流

可能重复:
在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 。 这只需要在非例外情​​况下完成,因此不需要最终。