A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宗士为 中级黑马   /  2012-5-12 14:46  /  1795 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Exercise1 {

        public static void main(String[] args) throws IOException {
                LineNumberReader lnr = new LineNumberReader(new FileReader("day19-笔记.txt"));
                List<String> list = new ArrayList<String>();
                String b;
                while ((b = lnr.readLine()) != null)
                list.add(lnr.getLineNumber() + ":" + b);
                lnr.close();
                BufferedWriter bw = new BufferedWriter(new FileWriter("exercise1day19.txt"));
                for(String s : list) {
                        bw.write(s);
                        bw.newLine();
                }
               
                bw.close();
        }
}


红色部分是关闭流
那我能不能一起关闭呢
以下:
                BufferedWriter bw = new BufferedWriter(new FileWriter("exercise1day19.txt"));
                for(String s : list) {
                        bw.write(s);
                        bw.newLine();
                }
                  lnr.close();
                bw.close();
        }
那么怎么确定什么时候该关流呢?




评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
你说的放在一起关闭如果是指代码的位置的话  是可以的. 就在循环写入目的文件 的循环结束后关闭,
回复 使用道具 举报
原则上是可以的,
但是你知道在代码的书写时,如果我们定义的流对象已经做完了我们使用它的目的(读取流完成了读取操作,输入流完成了输入操作),那就应该将其关了,这是代码书写的惯例,如果放在一起关可能会忘记关某一个,因为有时要关闭的不仅仅是那两个,再者放在一起关也降低了代码的可读性。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
可以,但不建议这样做,我们应该养成良好的书写习惯,以免忘记书写。
此程序如果忘了写最后一个流的关闭,其仍将暂用内存。消耗资源?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马