譬如下面这个语句,有两个匿名文件流,OutputStreamWriter和FileOutputStream
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile)));
如果仅仅对writer.close(),而不管内部的两个匿名文件流,有何问题吗?
譬如下面这个语句,有两个匿名文件流,OutputStreamWriter和FileOutputStream
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile)));
如果仅仅对writer.close(),而不管内部的两个匿名文件流,有何问题吗?
FileOutputStream fos = new FileOutputStream(targetFile);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter writer = new BufferedWriter(osw);
writer.close();
writer.close()
函数内部将out(也就是构造函数传入的osw)
置为null,此时osw
悬空,会被GC掉,同时FileOutputStream
重写了finalize()
方法,在此方法中关闭了文件流。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
没问题,其实这段代码只创建了一个流,这种写法是设计模式之包装模式。