概述:对硬盘进行数据的读写相比于从内存中读写数据哟啊慢很多,所以为了高效的读写数据JDK提供了缓冲流。其内部原理就是借助内存的缓冲区来减小硬盘的IO次数,提高性能。

一、高效缓冲字节流BufferedInputStream和BufferedOutputStream:

二、高效缓冲字符流BufferedReader和BufferedWriter:

三、高效缓冲字符流特有的方法:

readLine():一次读取一行数据,读到的内容不包含换行符。返回值是每次读到的内容,如果读到文件末尾返回值为null

newLine():写入一个换行符,换行符会根据操作系统变化而变化。

例 BufferedReader和BufferedWriter:

    public static void main(String[] args) {

       BufferedReader br=null;

       BufferedWriter bw=null;

       try {

           br=new BufferedReader(new FileReader("D:\\fiTest\\11.txt"));

           bw=new BufferedWriter(new FileWriter("D:\\fiTest\\22.txt"));

           String line;

           while ((line=br.readLine())!=null){

               System.out.println(line);

               bw.write(line);

               bw.newLine();//换行符

           }

       } catch (IOException e) {

           e.printStackTrace();

       }finally {

           try {

               if(null!=br)

                 br.close();

           } catch (IOException e) {

               e.printStackTrace();

           }

           try {

               if(null!=bw) {

                   bw.flush();

                   bw.close();

               }

           } catch (IOException e) {

               e.printStackTrace();

           }

例BufferedInputStream和BufferedOutputStream:

public static void main(String[] args) {

       BufferedInputStream br=null;

       BufferedOutputStream bw=null;

       try {

           br=new BufferedInputStream(new FileInputStream("D:\\fiTest\\11.txt"));

           bw=new BufferedOutputStream(new FileOutputStream("D:\\fiTest\\55.txt"));

           byte[] bytes=new byte[1024*4];

           int len;

           while ((len=br.read(bytes))!=-1){

               bw.write(bytes,0,len);

           }

       } catch (IOException e) {

           e.printStackTrace();

       }finally {

           try {

               if(null!=br)

                 br.close();

           } catch (IOException e) {

               e.printStackTrace();

           }

           try {

               if(null!=bw) {

                   bw.flush();

                   bw.close();

               }

           } catch (IOException e) {

               e.printStackTrace();

           }

       }

   }

       }

   }