我想将 Base64 编码的数据写入文件,并即时解码。我有
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new Base64OutputStream(
new FileOutputStream(myFile, false)));
我认为这有效,并且在我的 finally
中阻止我调用bw.close()
-- 即 close the outermost wrapper 。这足够了吗?还是一些匿名中间对象会泄漏?
我尝试查看代码,但我被 Sun 专有的 OutputStreamWriter 编码处理程序实现所困扰。文档中似乎也没有明确说明这一点。
最佳答案
一般来说,关闭最外层的包装就足够了;每个包装器在关闭时都会关闭底层流。
可以创建一个不执行此操作的包装器,但这可能被视为错误,因为 FilterOutputStream
的文档要求调用 close "releases any system resources associated with the stream."
关于java - 我必须关闭多少个包装的 Java I/O 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077642/