Java IO流之字符緩沖流實(shí)例詳解
字符流:
1、加入字符緩存流,增強(qiáng)讀取功能(readLine)
2、更高效的讀取數(shù)據(jù)
BufferedReader
從字符輸入流讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取。
FileReader:內(nèi)部使用InputStreamReader,解碼過程,byte->char,默認(rèn)緩存大小為8k
BufferReader:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過程,效率更高
/字符輸入緩沖流 private static void charReader() { //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Reader reader = new FileReader(file); //為字符流提供緩沖,已達(dá)到高效讀取的目的 BufferedReader bufr = new BufferedReader(reader); char[] chars = new char[1024]; int len = -1; while((len = bufr.read(chars)) != -1) { System.out.println(new String(chars,0,len)); } bufr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
BufferedWriter
將文本寫入字符輸出流,緩沖各個(gè)字符,從而提供單個(gè)字符、數(shù)組和字符串的高效寫入
FileWriter:內(nèi)部使用InputStreamWriter,解碼過程,byte->char,默認(rèn)緩存大小為8k
BufferWriter:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過程,效率更高
//字符輸出緩存流 private static void charWriter() { //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Writer writer = new FileWriter(file,true);//追加 //為字符流提供緩沖,已達(dá)到高效讀取的目的 BufferedWriter bufr = new BufferedWriter(writer); bufr.write("這里是字符緩沖流\r\n"); bufr.flush(); bufr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
總結(jié):
package com.lemon; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; /** * 緩存的目的: * 解決在寫入文件操作時(shí),頻繁的操作文件所帶來(lái)的性能降低問題 * BufferedOutputStream內(nèi)部默認(rèn)的緩存大小是8kb,每次寫入時(shí)存儲(chǔ)到緩存中的byte數(shù)組中,當(dāng)數(shù)組存滿時(shí),會(huì)把數(shù)組中的數(shù)據(jù)寫入文件 * 并且緩存下標(biāo)歸零 * * 字符流: * 1、加入字符緩存流,增強(qiáng)讀取功能(readLine) * 2、更高效的讀取數(shù)據(jù) * FileReader:內(nèi)部使用InputStreamReader,解碼過程,byte->char,默認(rèn)緩存大小為8k * BufferReader:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過程,效率更高 * BufferedWriter:同上 * @author lemonSun * * 2019年5月4日下午8:12:53 */ public class BufferStreamDemo { public static void main(String[] args) { // byteWriter(); // byteReader(); // byteReader1(); // charReader(); charWriter(); } //字符輸出緩存流 private static void charWriter() { //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Writer writer = new FileWriter(file,true);//追加 //為字符流提供緩沖,已達(dá)到高效讀取的目的 BufferedWriter bufr = new BufferedWriter(writer); bufr.write("這里是字符緩沖流\r\n"); bufr.flush(); bufr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //字符輸入緩存流 private static void charReader() { //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Reader reader = new FileReader(file); //為字符流提供緩沖,已達(dá)到高效讀取的目的 BufferedReader bufr = new BufferedReader(reader); char[] chars = new char[1024]; int len = -1; while((len = bufr.read(chars)) != -1) { System.out.println(new String(chars,0,len)); } bufr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //緩存流輸入 不用關(guān)閉 try自動(dòng)關(guān)閉 必須實(shí)現(xiàn)Closeable接口 private static void byteReader1(){ //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); //buf作用域在try大括號(hào)里面多條語(yǔ)句try(;),;隔開 try(BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file))) { byte[] bytes = new byte[1024]; int len = -1; while((len = buf.read(bytes)) != -1) { System.out.println(new String(bytes,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //緩存流輸入 private static void byteReader(){ //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字節(jié)輸出流 InputStream in = new FileInputStream(file); //字節(jié)緩沖流 BufferedInputStream buf = new BufferedInputStream(in); byte[] bytes = new byte[1024]; int len = -1; while((len = buf.read(bytes)) != -1) { System.out.println(new String(bytes,0,len)); } buf.close();//自動(dòng)關(guān)閉 in.close } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //緩存流輸出 private static void byteWriter(){ //目標(biāo)文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字節(jié)輸出流 OutputStream out = new FileOutputStream(file,true); //緩沖流 BufferedOutputStream buf = new BufferedOutputStream(out); //內(nèi)容 String info = "這里是緩沖流\r\n"; //寫入 buf.write(info.getBytes()); buf.close(); //jdk1.7以后自動(dòng)關(guān)閉 out // out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
以上所述是小編給大家介紹的Java IO流之字符緩沖流詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
淺談Java8對(duì)字符串連接的改進(jìn)正確姿勢(shì)
這篇文章主要介紹了Java8:對(duì)字符串連接的改進(jìn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Java實(shí)現(xiàn)簡(jiǎn)易五子棋小游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問題解決
本文主要介紹了Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問題解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07java 文件目錄讀寫刪除操作詳細(xì)實(shí)現(xiàn)代碼
這篇文章主要介紹了java 文件讀寫刪操作詳細(xì)實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-09-09Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別的相關(guān)資料,注解的作用是標(biāo)識(shí)一個(gè)類為數(shù)據(jù)訪問對(duì)象,并由Spring框架進(jìn)行實(shí)例化和管理,需要的朋友可以參考下2023-09-09使用IntelliJ IDEA調(diào)式Stream流的方法步驟
本文主要介紹了使用IntelliJ IDEA調(diào)式Stream流的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05解決Mybatis返回update后影響的行數(shù)問題
這篇文章主要介紹了解決Mybatis返回update后影響的行數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-11-11