緩衝流

緩衝流

  做用是提升IO流的讀寫速度,分爲字節緩衝流與字符緩衝流。數組

  字符緩衝流經常使用的類有BufferedReader類和BufferedWriter類,分別是緩衝字符輸入流和緩衝字符輸出流spa

  字節緩衝流經常使用的類有BufferedInputStream類、BufferedOutputStream類,分別是緩衝字節輸出流和緩衝字節輸入流。code

  字節緩衝流

    與字節流同樣,他也有對應的輸入和輸出與字節流搭配使用。blog

    下面對一個文件複製,來展現兩個類的做用: ip

    FileInputStream fis3 = new FileInputStream("D:\\demo0723\\jdk1.8.zip");
        BufferedInputStream bis1=new BufferedInputStream(fis3);
        FileOutputStream fos3 =new FileOutputStream("D:\\demo0723\\jdk1.8(4).zip");
        BufferedOutputStream bos1=new BufferedOutputStream(fos3);
        int len3=0;
        byte[] b2=new byte[1024];
        while((len3=bis1.read(b2))!=-1){
            bos1.write(b2, 0, len3);
        }
        bis1.close();
        bos1.close();    
    }

    文件複製通常的步驟:1.明確數據源2.添加緩衝流3.明確目的地4.添加緩衝流5.開始複製6.釋放資源資源

  字符緩衝流

    字符緩衝流,只能用於文本文檔的讀取讀出緩衝操做,兩個類的使用能夠參考字節緩衝流的使用。文檔

    實例(以文件複製爲例):it

 1 //明確數據源
 2         FileReader fr=new FileReader("D:\\demo0723\\b.txt");
 3         //添加緩衝流
 4         BufferedReader br=new BufferedReader(fr);
 5         //明確目的地
 6         FileWriter fw=new FileWriter("D:\\demo0723\\b\\bb.txt");
 7         //添加緩衝流
 8         BufferedWriter bw=new BufferedWriter(fw);
 9         //開始複製
10         int len=0;
11         char[] ch=new char[1024];
12         while((len=br.read(ch))!=-1){
13             bw.write(ch, 0, len);
14         }
15         //釋放資源
16         bw.close();
17         br.close();
18     }

  注意:

    字節流中換行符是:\r\n;class

    在字節緩衝流中寫入換行是調用newLine()方法,讀取文本行是readLine();jdk

  對比字節流複製和加入緩衝流複製文件的速度

    爲了較快複製文件,我將用數組單位複製:

  

 1 //普通字節流一個字節數組爲單位複製jdk
 2         FileInputStream fis2 = new FileInputStream("D:\\demo0723\\jdk1.8.zip");
 3         FileOutputStream fos2 =new FileOutputStream("D:\\demo0723\\jdk1.8(3).zip");
 4         long start3=System.currentTimeMillis();
 5         int len2=0;
 6         byte [] b1=new byte [1024];
 7         while((len2=fis2.read(b1))!=-1){
 8             fos2.write(b1,0,len2);
 9         }
10         fis2.close();
11         fos2.close();
12         long end3=System.currentTimeMillis();
13         long time2=end3-start3;
14         System.out.println("普通字節流數組的時間:"+time2);
15         
16         //緩衝字節流一個字節數組爲單位複製jdk
17         FileInputStream fis3 = new FileInputStream("D:\\demo0723\\jdk1.8.zip");
18         BufferedInputStream bis1=new BufferedInputStream(fis3);
19         FileOutputStream fos3 =new FileOutputStream("D:\\demo0723\\jdk1.8(4).zip");
20         BufferedOutputStream bos1=new BufferedOutputStream(fos3);
21         long start4=System.currentTimeMillis();
22         int len3=0;
23         byte[] b2=new byte[1024];
24         while((len3=bis1.read(b2))!=-1){
25             bos1.write(b2, 0, len3);
26         }
27         bis1.close();
28         bos1.close();
29         long end4=System.currentTimeMillis();
30         long time3=end4-start4;
31         System.out.println("緩衝字節流數組的時間:"+time3);

    執行結果如圖所示:

       

 

    加入緩衝流後複製速度明顯加快了。

相關文章
相關標籤/搜索