字符流:
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供蕭山企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為蕭山眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
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ù)組存滿(mǎn)時(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ì)創(chuàng)新互聯(lián)網(wǎng)站的支持!