Java實(shí)現(xiàn)帶緩沖的輸入輸出流
緩沖是 I/O 的一種性能優(yōu)化。緩沖流為 I/O 流增加了內(nèi)存緩沖區(qū)。
BufferedInputStream類 與 BufferedOutputStream類
BufferedInputStream類 可以對(duì)所有InputStream的子類進(jìn)行緩沖區(qū)的包裝,以達(dá)到性能的優(yōu)化。
BufferedOutputStream類 中的 flush()方法 被用來把緩沖區(qū)的字節(jié)寫入到文件中,并清空緩存。
BufferedInputStream類的構(gòu)造方法:
構(gòu)造方法 | 介紹 |
---|---|
BufferedInputStream(FileInputStream fileInputStream); | 創(chuàng)建一個(gè)帶有32個(gè)字節(jié)的緩沖輸入流。 |
BufferedInputStream(FileInputStream fileInputStream , int size); | 按指定的大小來創(chuàng)建緩沖輸入流。 |
BufferedOutputStream類的構(gòu)造方法:
構(gòu)造方法 | 介紹 |
---|---|
BufferedOutputStream(FileOutputStream fileOutputStream); | 創(chuàng)建一個(gè)帶有32個(gè)字節(jié)的緩沖輸出流。 |
BufferedOutputStream(FileOutputStream fileOutputStream , int size); | 按指定的大小來創(chuàng)建緩沖輸出流。 |
BufferedInputStream類 與 BufferedOutputStream類 實(shí)例:
import java.io.*; public class Demo4 { public static void main(String[] args) { /** * 緩沖字節(jié)輸入流(BufferedInputStream) * 特點(diǎn):提高效率 */ File file = new File("C:\\JAVA_API_1.7中文.chm"); BufferedInputStream bufferedInputStream = null;//創(chuàng)建緩沖字節(jié)流 FileInputStream fileInputStream = null; long stare = System.currentTimeMillis();//獲得當(dāng)前流開始時(shí)的毫秒值 try { fileInputStream=new FileInputStream(file); bufferedInputStream = new BufferedInputStream(fileInputStream);//將文件字節(jié)流包裝成緩沖字節(jié)流 byte by[] = new byte[1024];//緩沖區(qū)字節(jié)數(shù)組(這個(gè)緩沖區(qū)與Buffered不同) while ((bufferedInputStream.read(by))!=-1){//使用緩沖字節(jié)流讀取數(shù)據(jù) } long end = System.currentTimeMillis();//獲得當(dāng)前流結(jié)束時(shí)的毫秒值 System.out.println("運(yùn)行經(jīng)歷的毫秒數(shù):"+(end - stare)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileInputStream!=null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bufferedInputStream!=null){ try { bufferedInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 緩沖字節(jié)輸出流(BufferedOutputStream) * 特點(diǎn):提高效率 */ File file1 = new File("C:\\Word.txt"); BufferedOutputStream bufferedOutputStream = null;//創(chuàng)建緩沖字節(jié)輸出流 FileOutputStream fileOutputStream = null; try { fileOutputStream=new FileOutputStream(file1); bufferedOutputStream=new BufferedOutputStream(fileOutputStream);//將文件輸出流包裝到緩沖字節(jié)輸出流 String str = "深山踏紅葉,耳畔聞鷺鳴。"; byte by[] = str.getBytes(); bufferedOutputStream.write(by); //<*> 使用緩沖字節(jié)輸出流時(shí),要多進(jìn)行刷新操作,避免等待,有數(shù)據(jù)時(shí)就將數(shù)據(jù)寫入文件當(dāng)中 <*> bufferedOutputStream.flush();//刷新(強(qiáng)制將緩沖區(qū)數(shù)據(jù)寫入文件中,即使緩沖區(qū)沒有寫滿) } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileOutputStream!=null){ try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bufferedOutputStream!=null){ try { bufferedOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
BufferedReader類 與 BufferedWriter類
BufferedReader類 與 BufferedWriter類 分別繼承了 Reader類 與 Writer類,這兩個(gè)類同樣具有內(nèi)部緩沖機(jī)制,并以行為單位輸入/輸出。
BufferedReader類常用方法:
BufferedWriter類常用方法:
BufferedReader類 與 BufferedWriter類 實(shí)例:
import java.io.*; public class Demo6 { public static void main(String[] args) { File file = new File("C:\\Word.txt"); /** * 文件緩沖字符輸出流(BufferedWriter) */ FileWriter fileWriter = null;//創(chuàng)建文件字符輸出流 BufferedWriter bufferedWriter = null;//創(chuàng)建文件緩沖字符輸出流 try { fileWriter = new FileWriter(file); bufferedWriter = new BufferedWriter(fileWriter);//將文件字符輸出流包裝成文件緩沖字符輸出流 String str1 = "神里"; String str2 = "綾華"; bufferedWriter.write(str1);//第一行數(shù)據(jù) bufferedWriter.newLine();//創(chuàng)建一個(gè)新行 bufferedWriter.write(str2);//第二行數(shù)據(jù) } catch (IOException e) { e.printStackTrace(); }finally {//<*> 注意:流的關(guān)閉順序,先創(chuàng)建的后關(guān)閉。 <*> if (bufferedWriter!=null){ try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileWriter!=null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 文件緩沖字符輸入流(BufferedReader) */ FileReader fileReader = null; BufferedReader bufferedReader = null; try { fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader);//將文件字符輸入流包裝成文件緩沖字符輸入流 String tmp = null;//臨時(shí)變量 int i = 1;//計(jì)數(shù)器 while ((tmp = bufferedReader.readLine())!=null){//循環(huán)讀取文件中的內(nèi)容 System.out.println("第"+i+"行:"+tmp); i++; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (bufferedReader!=null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileReader!=null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問題
這篇文章主要介紹了解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08java poi sax方式處理大數(shù)據(jù)量excel文件
這篇文章主要介紹了java poi sax方式處理大數(shù)據(jù)量excel文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Springboot使用influxDB時(shí)序數(shù)據(jù)庫的實(shí)現(xiàn)
項(xiàng)目中需要存放大量設(shè)備日志,且需要對(duì)其進(jìn)行簡(jiǎn)單的數(shù)據(jù)分析,信息提取工作,所以本文就介紹一下Springboot使用influxDB時(shí)序數(shù)據(jù)庫,感興趣的可以了解一下2021-08-08Spring使用Configuration注解管理bean的方式詳解
在Spring的世界里,Configuration注解就像是一位細(xì)心的園丁,它的主要職責(zé)是在這個(gè)繁花似錦的園子里,幫助我們聲明和管理各種各樣的bean,本文給大家介紹了在Spring中如何優(yōu)雅地管理你的bean,需要的朋友可以參考下2024-05-05java實(shí)現(xiàn)Flappy Bird游戲源代碼
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Flappy Bird游戲源代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件
這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件,分享在MyBatisPlus中經(jīng)常會(huì)用到代碼來構(gòu)造查詢條件等內(nèi)容,需要的小伙伴可以參考一下2022-02-02SpringMvc @RequestParam 使用推薦使用包裝類型代替包裝類型
這篇文章主要介紹了SpringMvc @RequestParam 使用推薦使用包裝類型代替包裝類型,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題
這篇文章主要介紹了解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01