詳解java IO流之緩沖流的使用
java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當對文件或其他目標頻繁讀寫或操作效率低,效能差。這時使用緩沖流能夠更高效的讀寫信息。因為緩沖流先將數據緩存起來,然后一起寫入或讀取出來。所以說,緩沖流還是很重要的,在IO操作時記得加上緩沖流提升性能。
緩沖流分為字節(jié)和字符緩沖流
字節(jié)緩沖流為:
BufferedInputStream—字節(jié)輸入緩沖流
BufferedOutputStream—字節(jié)輸出緩沖流
字符緩沖流為:
BufferedReader—字符輸入緩沖流
BufferedWriter—字符輸出緩沖流
下面主要介紹這四種緩沖流的使用。
一. 字節(jié)緩沖流
1.BufferedOutputStream—字節(jié)輸出緩沖流
BufferedOutputStream類實現(xiàn)緩沖的輸出了,通過設置這種輸出流,應用程序就可以將各個字節(jié)寫入底層輸出流中,而不必每一個字節(jié)寫入都調用底層系統(tǒng)。
示例代碼:
public static void main(String[] args) { try { //創(chuàng)建字節(jié)輸出流實例 OutputStream out=new FileOutputStream("L:\\test.txt"); //根據字節(jié)輸出流構建字節(jié)緩沖流 BufferedOutputStream buf=new BufferedOutputStream(out); String data="好好學習,天天向上"; buf.write(data.getBytes());//寫入緩沖區(qū) buf.flush();//刷新緩沖區(qū),即把內容寫入 //關閉流 buf.close();//關閉緩沖流時,也會刷新一次緩沖區(qū) out.close(); } catch (IOException e) { e.printStackTrace(); } }
2.BufferedInputStream—字節(jié)輸入緩沖流
BufferedInputStream為別的輸入流添加緩沖功能,在創(chuàng)建BufferedInputStream時會創(chuàng)建一個內部緩沖數組,用于緩沖數據,提高性能。
示例代碼:
public static void main(String[] args) { try { //創(chuàng)建字節(jié)輸入流實例 InputStream in=new FileInputStream("L:\\test.txt"); //根據字節(jié)輸入流構建字節(jié)緩沖流 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—字符輸出緩沖流
將文本寫入字符輸出流,緩沖各個字符,從而提供高效的寫入。可以指定緩沖區(qū)的大小,一般情況下,默認的緩沖區(qū)大小就足夠了。
示例代碼:
public static void main(String[] args) { try { Writer w=new FileWriter("L:\\test.txt"); //根據字符輸出流創(chuàng)建字符緩沖流 BufferedWriter buf=new BufferedWriter(w); //寫入數據 buf.write("只要功夫深鐵杵磨成針"); //刷新流 buf.flush(); //關閉流 buf.close(); w.close(); } catch (IOException e) { e.printStackTrace(); } }
2.BufferedReader—字符輸入緩沖流
從字符輸入流中讀取信息,緩沖各個字符,從而實現(xiàn)高效讀取??梢灾付ň彌_區(qū)的大小,一般情況下,默認的緩沖區(qū)大小就足夠了。默認大小為8192.
示例代碼:
public static void main(String[] args) { try { Reader r=new FileReader("L:\\test.txt"); //根據字符輸入流創(chuàng)建字符緩沖流 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(); } }
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關文章
詳解分別用Kotlin和java寫RecyclerView的示例
本篇文章主要介紹了詳解分別用Kotlin和java寫RecyclerView的示例,詳解分別用Kotlin和java寫RecyclerView的示例2017-12-12JAVA使用ElasticSearch查詢in和not in的實現(xiàn)方式
今天小編就為大家分享一篇關于JAVA使用Elasticsearch查詢in和not in的實現(xiàn)方式,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12java:try...catch跳過異常繼續(xù)處理循環(huán)問題
這篇文章主要介紹了java:try...catch跳過異常繼續(xù)處理循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10webuploader 實現(xiàn)圖片批量上傳功能附實例代碼
這篇文章主要介紹了webuploader 實現(xiàn)圖片批量上傳功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11