黑马程序员技术交流社区

标题: BufferedReader本来就是一个缓冲流 为什么读到的字符还要存 [打印本页]

作者: Hi天天向上    时间: 2014-6-5 12:06
标题: BufferedReader本来就是一个缓冲流 为什么读到的字符还要存
import java.io.*;
public class CopyDemo {

        public static void main(String[] args) {
                BufferedReader br = null;
                BufferedWriter bw = null;
                try
                {
                        br = new BufferedReader(new FileReader("C:\\Users\\LYH\\Desktop\\java1.txt"));
                        bw = new BufferedWriter(new FileWriter("C:\\Users\\LYH\\Desktop\\java4.txt"));
//用的是readLine方法
//                        String line = null;
//                        while((line=br.readLine())!=null)
//                        {
//                                bw.write(line);
//                                bw.newLine();
//                        }
                       
                       
                        /**用read(char[])
                         * 用char[]
                         *
                         * */
                        int len = 0;
                        char[] ch = new char[1024];
                        while((len=br.read(ch))!=-1)
                        {
                                bw.write(ch,0,len);
                        }
                }catch(IOException e){
                        e.printStackTrace();
                       
                }
                finally
                {
                        try
                        {
                                if(br!=null)
                                        br.close();
                        }
                        catch(IOException e)
                        {
                                throw new RuntimeException("关闭读取流失败!");
                        }
                        try
                        {
                                if(bw!=null)
                                        bw.close();
                        }
                        catch(IOException e)
                        {
                                throw new RuntimeException("关闭写入流失败!");
                        }
                       
                }

        }

}

如题 BufferedReader本来就是缓冲流  为什么读到的字符还要存到String里面或者char[]里面呢  
有谁能说下这个缓冲流和char[]或者String都干了什么  这里面的原理是什么呢  能从底层说下么  
拜托了 大神们


作者: yinxjfly    时间: 2014-6-5 12:22
BufferedReader里面封装了数组,但是它又是read的包装类,所以既可以调用自己的readLine()方法,也可以调用
被装饰的Read子类的read(char[] buf)的方法。
这两个方法所属的类是不同的,而BuffferedReader底层还是调用的read()单个字符的方法,它只是将读到的数据临时存储起来,
你仔细研究一下毕老师的模拟BufferedReader哪一节的视频就理解了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2