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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 茄子 高级黑马   /  2014-7-12 11:13  /  1039 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是我们毕老师课上的一点代码,有一点不是很明白,其中已经用红色字体标记,有没有给我讲解一下呢!!
package nineteen;
/*
* 利用缓冲区拷贝一个文件,
* */
import java.io.*;
public class BufferedReaderWriterTestDemo {
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }

        public static void main(String[] args)
        {
                //这里我们建立空的引用
                BufferedReader bufr=null;
                BufferedWriter bufw=null;
                try
                {
                        //这里我们直接利用new关键字,创建读写流对象,使用参数传递的方式进行相关联
                        bufr=new BufferedReader(new FileReader("d:\\Eclipsetest\\zhaoyujie.txt"));
                        bufw=new BufferedWriter(new FileWriter("d:\\Eclipsetest\\mmd.txt"));
                        String line=null;
                        //这里我们调用readLine和newLine进行文件的读取和写入
                        while((line=bufr.readLine())!=null)
                        {
                                bufw.write(line);
                                bufw.newLine();
                                //这里必要的刷新,使得我们可以避免其他事物的中断而导致的文件丢失
                                bufw.flush();
                               
                        }
                }
                catch(IOException e)
                {
                        throw new RuntimeException("文件读写失败");
                }
                finally
                {
                        try
                        {
                                if(bufr != null)                 这里的缓冲区不为null,就关闭??按照我们正常的理解,不应该是缓冲区中没有数据才应该关闭的嘛1!
                                        bufr.close();       
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("读取关闭失败");
                        }
                        try
                        {
                                //这里的判断有点理解不了。     
                                if(bufw !=null)
                                        bufw.close();
                        }
                        catch(Exception e)
                        {
                                throw new RuntimeException("写入关闭失败");
                        }
                }

        }

}


评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

3 个回复

倒序浏览
如果源指定错误,那么bufferedReader没有创建成功,为null,直接burf.close(); ,会出现nullpointException
所以先判断一下,对象是否创建成功,如果没成功,就不用关了。

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

回复 使用道具 举报
这里的判断bufr,bufw是否为空,是判断该对象是否创建,如果对象没创建就不用关闭了

评分

参与人数 1技术分 +1 收起 理由
Doraemon + 1

查看全部评分

回复 使用道具 举报
如果不判断是要报空指针异常的,null是不能引用方法的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马