java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當(dāng)對文件或其他目標(biāo)頻繁讀寫或操作效率低,效能差。這時使用緩沖流能夠更高效的讀寫信息。因為緩沖流先將數(shù)據(jù)緩存起來,然后一起寫入或讀取出來。所以說,緩沖流還是很重要的,在IO操作時記得加上緩沖流提升性能。
緩沖流分為字節(jié)和字符緩沖流
字節(jié)緩沖流為:
BufferedInputStream—字節(jié)輸入緩沖流
BufferedOutputStream—字節(jié)輸出緩沖流
字符緩沖流為:
BufferedReader—字符輸入緩沖流
BufferedWriter—字符輸出緩沖流
下面主要介紹這四種緩沖流的使用。
一. 字節(jié)緩沖流
1.BufferedOutputStream—字節(jié)輸出緩沖流
BufferedOutputStream類實現(xiàn)緩沖的輸出了,通過設(shè)置這種輸出流,應(yīng)用程序就可以將各個字節(jié)寫入底層輸出流中,而不必每一個字節(jié)寫入都調(diào)用底層系統(tǒng)。
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static void main(String[] args) { try { //創(chuàng)建字節(jié)輸出流實例 OutputStream out= new FileOutputStream( "L:\\test.txt" ); //根據(jù)字節(jié)輸出流構(gòu)建字節(jié)緩沖流 BufferedOutputStream buf= new BufferedOutputStream(out); String data= "好好學(xué)習(xí),天天向上" ; buf.write(data.getBytes()); //寫入緩沖區(qū) buf.flush(); //刷新緩沖區(qū),即把內(nèi)容寫入 //關(guān)閉流 buf.close(); //關(guān)閉緩沖流時,也會刷新一次緩沖區(qū) out.close(); } catch (IOException e) { e.printStackTrace(); } } |
2.BufferedInputStream—字節(jié)輸入緩沖流
BufferedInputStream為別的輸入流添加緩沖功能,在創(chuàng)建BufferedInputStream時會創(chuàng)建一個內(nèi)部緩沖數(shù)組,用于緩沖數(shù)據(jù),提高性能。
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static void main(String[] args) { try { //創(chuàng)建字節(jié)輸入流實例 InputStream in= new FileInputStream( "L:\\test.txt" ); //根據(jù)字節(jié)輸入流構(gòu)建字節(jié)緩沖流 BufferedInputStream buf= new BufferedInputStream(in); byte []bytes= new byte [ 1024 ]; //數(shù)據(jù)讀取 int len=- 1 ; StringBuffer sb= new StringBuffer(); while ((len=buf.read(bytes))!=- 1 ) { sb.append( new String(bytes, 0 ,len)); } System.out.println( "內(nèi)容為:" +sb); //關(guān)閉流 buf.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } |
二. 字符緩沖流
1.BufferedWriter—字符輸出緩沖流
將文本寫入字符輸出流,緩沖各個字符,從而提供高效的寫入。可以指定緩沖區(qū)的大小,一般情況下,默認(rèn)的緩沖區(qū)大小就足夠了。
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static void main(String[] args) { try { Writer w= new FileWriter( "L:\\test.txt" ); //根據(jù)字符輸出流創(chuàng)建字符緩沖流 BufferedWriter buf= new BufferedWriter(w); //寫入數(shù)據(jù) buf.write( "只要功夫深鐵杵磨成針" ); //刷新流 buf.flush(); //關(guān)閉流 buf.close(); w.close(); } catch (IOException e) { e.printStackTrace(); } } |
2.BufferedReader—字符輸入緩沖流
從字符輸入流中讀取信息,緩沖各個字符,從而實現(xiàn)高效讀取。可以指定緩沖區(qū)的大小,一般情況下,默認(rèn)的緩沖區(qū)大小就足夠了。默認(rèn)大小為8192.
示例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public static void main(String[] args) { try { Reader r= new FileReader( "L:\\test.txt" ); //根據(jù)字符輸入流創(chuàng)建字符緩沖流 BufferedReader buf= new BufferedReader(r); char [] data= new char [ 512 ]; //數(shù)據(jù)讀取 int len=- 1 ; StringBuilder sb= new StringBuilder(); while ((len=buf.read(data))!=- 1 ) { sb.append( new String(data, 0 ,len)); } System.out.println( "內(nèi)容是: " +sb); //關(guān)閉流 buf.close(); r.close(); } catch (IOException e) { e.printStackTrace(); } } |
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持服務(wù)器之家!
原文鏈接:http://www.cnblogs.com/hq233/p/6266928.html