java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當對文件或其他目標頻繁讀寫或操作效率低,效能差。這時使用緩沖流能夠更高效的讀寫信息。因為緩沖流先將數據緩存起來,然后一起寫入或讀取出來。所以說,緩沖流還是很重要的,在IO操作時記得加上緩沖流提升性能。
緩沖流分為字節和字符緩沖流
字節緩沖流為:
BufferedInputStream―字節輸入緩沖流
BufferedOutputStream―字節輸出緩沖流
字符緩沖流為:
BufferedReader―字符輸入緩沖流
BufferedWriter―字符輸出緩沖流
下面主要介紹這四種緩沖流的使用。
一. 字節緩沖流
1.BufferedOutputStream―字節輸出緩沖流
BufferedOutputStream類實現緩沖的輸出了,通過設置這種輸出流,應用程序就可以將各個字節寫入底層輸出流中,而不必每一個字節寫入都調用底層系統。
示例代碼:
public static void main(String[] args) { try { //創建字節輸出流實例 OutputStream out=new FileOutputStream("L://test.txt"); //根據字節輸出流構建字節緩沖流 BufferedOutputStream buf=new BufferedOutputStream(out); String data="好好學習,天天向上"; buf.write(data.getBytes());//寫入緩沖區 buf.flush();//刷新緩沖區,即把內容寫入 //關閉流 buf.close();//關閉緩沖流時,也會刷新一次緩沖區 out.close(); } catch (IOException e) { e.printStackTrace(); } }2.BufferedInputStream―字節輸入緩沖流
BufferedInputStream為別的輸入流添加緩沖功能,在創建BufferedInputStream時會創建一個內部緩沖數組,用于緩沖數據,提高性能。
示例代碼:
public static void main(String[] args) { try { //創建字節輸入流實例 InputStream in=new FileInputStream("L://test.txt"); //根據字節輸入流構建字節緩沖流 BufferedInputStream buf=new BufferedInputStream(in); byte[]bytes=new byte[1024]; //數據讀取 int len=-1; StringBuffer sb=new StringBuffer(); while((len=buf.read(bytes))!=-1) { sb.append(new String(bytes,0,len)); } System.out.println("內容為:"+sb); //關閉流 buf.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } 二. 字符緩沖流
1.BufferedWriter―字符輸出緩沖流
將文本寫入字符輸出流,緩沖各個字符,從而提供高效的寫入??梢灾付ň彌_區的大小,一般情況下,默認的緩沖區大小就足夠了。
示例代碼:
public static void main(String[] args) { try { Writer w=new FileWriter("L://test.txt"); //根據字符輸出流創建字符緩沖流 BufferedWriter buf=new BufferedWriter(w); //寫入數據 buf.write("只要功夫深鐵杵磨成針"); //刷新流 buf.flush(); //關閉流 buf.close(); w.close(); } catch (IOException e) { e.printStackTrace(); } } 2.BufferedReader―字符輸入緩沖流
從字符輸入流中讀取信息,緩沖各個字符,從而實現高效讀取??梢灾付ň彌_區的大小,一般情況下,默認的緩沖區大小就足夠了。默認大小為8192.
示例代碼:
public static void main(String[] args) { try { Reader r=new FileReader("L://test.txt"); //根據字符輸入流創建字符緩沖流 BufferedReader buf=new BufferedReader(r); char [] data=new char[512]; //數據讀取 int len=-1; StringBuilder sb=new StringBuilder(); while((len=buf.read(data))!=-1) { sb.append(new String(data,0,len)); } System.out.println("內容是: "+sb); //關閉流 buf.close(); r.close(); } catch (IOException e) { e.printStackTrace(); } } 以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!
新聞熱點
疑難解答