2 baidu 16769629 baidu_16769629 于 2017.09.02 17:32 提问

java文件流的关闭问题
  1. writer =new BufferedWriter(new OutputStreamWriter(out));
  2. OutputStreamWriter outstr = new OutputStreamWriter(out); writer =new BufferedWriter(outstr); writer和out这两个文件流需要关闭我晓得。可是第一个案例new OutputStreamWriter 这个new出来的流我没有实例化,这样写合理吗,还是说像第二个案例这样关闭三个流。第一种会不会造成流不关闭情况。有人晓得不。

2个回答

sphinx0906
sphinx0906   2017.09.07 17:39

流的使用你要记住几个层级的,,不要把嵌套在里面的流关掉而导致外部的流无法运作,,所哟你开启一个流就尽量使用一个流,,开启了不使用很浪费空间,,,还有最后用完一定要close掉,,要不然它会一直占用。

fight_in_dl
fight_in_dl   Ds   Rxr 2017.09.03 05:27

1 题目中writer和out这两个流构成流链(stream chain),在这种情况下,只需要关闭最上层的流(此例中为writer),链中的其它流会自动关闭。
2 如题目所示,有两种写法:

Something s = new Something(); //如果你在之后并不需要用 s 这个变量,那么此种写法和下面写法没有区别
Other o = new Other(s);

Other o = new Other(new Something()); //如前所述,如果不需要使用s,那么这种写法更为简洁,也更常用。

回到题目,基本程序逻辑如下即可:

writer =new BufferedWriter(new OutputStreamWriter(out));
//其它代码
writer.close(); //关闭最上层流,流链中其它流会自动关闭。

如果对您有帮助,请采纳答案好吗,谢谢!

Csdn user default icon
上传中...
上传图片
插入图片