【java的 IO流之緩沖流】


java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當對文件或其他目標頻繁讀寫或操作效率低,效能差。這時使用緩沖流能夠更高效的讀寫信息。因為緩沖流先將數據緩存起來,然后一起寫入或讀取出來。所以說,緩沖流還是很重要的,在IO操作時記得加上緩沖流提升性能。

       緩沖流分為字節和字符緩沖流
字節緩沖流為:
BufferedInputStream—字節輸入緩沖流
BufferedOutputStream—字節輸出緩沖流
字符緩沖流為:
BufferedReader—字符輸入緩沖流
BufferedWriter—字符輸出緩沖流
下面主要介紹這四種緩沖流的使用。

一.字節緩沖流
1.BufferedOutputStream—字節輸出緩沖流
      BufferedOutputStream類實現緩沖的輸出了,通過設置這種輸出流,應用程序就可以將各個字節寫入底層輸出流中,而不必每一個字節寫入都調用底層系統。
該類的構造函數:
示例代碼:
  1. public static void main(String[] args) {         
  2.       try {  
  3.     //創建字節輸出流實例  
  4.     OutputStream out=new FileOutputStream("L:\\test.txt");  
  5.     //根據字節輸出流構建字節緩沖流  
  6.     BufferedOutputStream buf=new BufferedOutputStream(out);  
  7.       
  8.     String data="好好學習,天天向上";  
  9.     buf.write(data.getBytes());//寫入緩沖區  
  10.     buf.flush();//刷新緩沖區,即把內容寫入  
  11.     //關閉流  
  12.     buf.close();//關閉緩沖流時,也會刷新一次緩沖區  
  13.     out.close();  
  14.       
  15. } catch (IOException e) {  
  16.     e.printStackTrace();  
  17. }  
  18.     
  19.    }   
復制代碼
2.BufferedInputStream—字節輸入緩沖流
       BufferedInputStream為別的輸入流添加緩沖功能,在創建BufferedInputStream時會創建一個內部緩沖數組,用於緩沖數據,提高性能。
示例代碼:
  1. public static void main(String[] args) {         
  2.        try {  
  3.         //創建字節輸入流實例  
  4.         InputStream in=new FileInputStream("L:\\test.txt");  
  5.         //根據字節輸入流構建字節緩沖流  
  6.         BufferedInputStream buf=new BufferedInputStream(in);  
  7.           
  8.         byte[]bytes=new byte[1024];  
  9.         //數據讀取  
  10.         int len=-1;  
  11.         StringBuffer  sb=new StringBuffer();  
  12.         while((len=buf.read(bytes))!=-1)  
  13.         {  
  14.             sb.append(new String(bytes,0,len));  
  15.         }  
  16.         System.out.println("內容為:"+sb);  
  17.         //關閉流  
  18.         buf.close();  
  19.         in.close();  
  20.           
  21.           
  22.     } catch (IOException e) {  
  23.         e.printStackTrace();  
  24.     }  
  25.      
  26.     }   
復制代碼
運行結果:
<ignore_js_op> 

二.字符緩沖流
 
1.BufferedWriter—字符輸出緩沖流
    將文本寫入字符輸出流,緩沖各個字符,從而提供高效的寫入。可以指定緩沖區的大小,一般情況下,默認的緩沖區大小就足夠了。
示例代碼:
  1. public static void main(String[] args) {  
  2.       
  3.     try {  
  4.         Writer w=new FileWriter("L:\\test.txt");  
  5.         //根據字符輸出流創建字符緩沖流  
  6.         BufferedWriter buf=new BufferedWriter(w);  
  7.         //寫入數據  
  8.         buf.write("只要功夫深鐵杵磨成針");  
  9.         //刷新流  
  10.         buf.flush();  
  11.         //關閉流  
  12.         buf.close();  
  13.         w.close();  
  14.     } catch (IOException e) {  
  15.         e.printStackTrace();  
  16.     }  
  17.       
  18.     
  19.    }   
復制代碼
運行結果:
<ignore_js_op> 
2.BufferedReader—字符輸入緩沖流
         從字符輸入流中讀取信息,緩沖各個字符,從而實現高效讀取。可以指定緩沖區的大小,一般情況下,默認的緩沖區大小就足夠了。默認大小為8192.

示例代碼:
  1. public static void main(String[] args) {  
  2.           
  3.         try {  
  4.             Reader r=new FileReader("L:\\test.txt");  
  5.             //根據字符輸入流創建字符緩沖流  
  6.             BufferedReader buf=new BufferedReader(r);  
  7.               
  8.             char [] data=new char[512];  
  9.             //數據讀取  
  10.             int len=-1;  
  11.             StringBuilder sb=new StringBuilder();  
  12.             while((len=buf.read(data))!=-1)  
  13.             {  
  14.                 sb.append(new String(data,0,len));  
  15.             }  
  16.             System.out.println("內容是: "+sb);  
  17.             //關閉流  
  18.             buf.close();  
  19.             r.close();  
  20.         } catch (IOException e) {  
  21.             e.printStackTrace();  
  22.         }  
  23.           
  24.      
  25.     }   
復制代碼
運行結果:
<ignore_js_op>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM