Java IO流之字符緩沖流實(shí)例詳解
字符流:
1、加入字符緩存流,增強(qiáng)讀取功能(readLine)
2、更高效的讀取數(shù)據(jù)
BufferedReader
從字符輸入流讀取文本,緩沖各個(gè)字符,從而實(shí)現(xiàn)字符、數(shù)組和行的高效讀取。
FileReader:內(nèi)部使用InputStreamReader,解碼過(guò)程,byte->char,默認(rèn)緩存大小為8k
BufferReader:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過(guò)程,效率更高
/字符輸入緩沖流 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
將文本寫(xiě)入字符輸出流,緩沖各個(gè)字符,從而提供單個(gè)字符、數(shù)組和字符串的高效寫(xiě)入
FileWriter:內(nèi)部使用InputStreamWriter,解碼過(guò)程,byte->char,默認(rèn)緩存大小為8k
BufferWriter:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過(guò)程,效率更高
//字符輸出緩存流 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; /** * 緩存的目的: * 解決在寫(xiě)入文件操作時(shí),頻繁的操作文件所帶來(lái)的性能降低問(wèn)題 * BufferedOutputStream內(nèi)部默認(rèn)的緩存大小是8kb,每次寫(xiě)入時(shí)存儲(chǔ)到緩存中的byte數(shù)組中,當(dāng)數(shù)組存滿時(shí),會(huì)把數(shù)組中的數(shù)據(jù)寫(xiě)入文件 * 并且緩存下標(biāo)歸零 * * 字符流: * 1、加入字符緩存流,增強(qiáng)讀取功能(readLine) * 2、更高效的讀取數(shù)據(jù) * FileReader:內(nèi)部使用InputStreamReader,解碼過(guò)程,byte->char,默認(rèn)緩存大小為8k * BufferReader:默認(rèn)緩存大小為8k,但可以手動(dòng)指定緩存大小,把數(shù)據(jù)讀取到緩存中,減少每次轉(zhuǎn)換過(guò)程,效率更高 * 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(;),;隔開(kāi) 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"; //寫(xiě)入 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ì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
淺談Java8對(duì)字符串連接的改進(jìn)正確姿勢(shì)
這篇文章主要介紹了Java8:對(duì)字符串連接的改進(jìn),文中通過(guò)示例代碼介紹的非常詳細(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-05

Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決

java 文件目錄讀寫(xiě)刪除操作詳細(xì)實(shí)現(xiàn)代碼

Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析

使用IntelliJ IDEA調(diào)式Stream流的方法步驟

解決Mybatis返回update后影響的行數(shù)問(wèn)題