詳解java IO流之緩沖流的使用
java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當對文件或其他目標頻繁讀寫或操作效率低,效能差。這時使用緩沖流能夠更高效的讀寫信息。因為緩沖流先將數(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)。
示例代碼:
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ù),提高性能。
示例代碼:
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ū)的大小,一般情況下,默認的緩沖區(qū)大小就足夠了。
示例代碼:
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ū)的大小,一般情況下,默認的緩沖區(qū)大小就足夠了。默認大小為8192.
示例代碼:
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í)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
javaweb實現(xiàn)百度GPS定位接口(經(jīng)緯度)
這篇文章主要介紹了javaweb實現(xiàn)百度GPS定位接口(經(jīng)緯度),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
詳解分別用Kotlin和java寫RecyclerView的示例
本篇文章主要介紹了詳解分別用Kotlin和java寫RecyclerView的示例,詳解分別用Kotlin和java寫RecyclerView的示例2017-12-12
JAVA使用ElasticSearch查詢in和not in的實現(xiàn)方式
今天小編就為大家分享一篇關(guān)于JAVA使用Elasticsearch查詢in和not in的實現(xiàn)方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
java:try...catch跳過異常繼續(xù)處理循環(huán)問題
這篇文章主要介紹了java:try...catch跳過異常繼續(xù)處理循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
webuploader 實現(xiàn)圖片批量上傳功能附實例代碼
這篇文章主要介紹了webuploader 實現(xiàn)圖片批量上傳功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11

