做用是提升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);
執行結果如圖所示:
加入緩衝流後複製速度明顯加快了。