您好,登錄后才能下訂單哦!
字符流:
1、加入字符緩存流,增強讀取功能(readLine)
2、更高效的讀取數據
BufferedReader
從字符輸入流讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。
FileReader:內部使用InputStreamReader,解碼過程,byte->char,默認緩存大小為8k
BufferReader:默認緩存大小為8k,但可以手動指定緩存大小,把數據讀取到緩存中,減少每次轉換過程,效率更高
/字符輸入緩沖流 private static void charReader() { //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Reader reader = new FileReader(file); //為字符流提供緩沖,已達到高效讀取的目的 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
將文本寫入字符輸出流,緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入
FileWriter:內部使用InputStreamWriter,解碼過程,byte->char,默認緩存大小為8k
BufferWriter:默認緩存大小為8k,但可以手動指定緩存大小,把數據讀取到緩存中,減少每次轉換過程,效率更高
//字符輸出緩存流 private static void charWriter() { //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Writer writer = new FileWriter(file,true);//追加 //為字符流提供緩沖,已達到高效讀取的目的 BufferedWriter bufr = new BufferedWriter(writer); bufr.write("這里是字符緩沖流\r\n"); bufr.flush(); bufr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
總結:
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; /** * 緩存的目的: * 解決在寫入文件操作時,頻繁的操作文件所帶來的性能降低問題 * BufferedOutputStream內部默認的緩存大小是8kb,每次寫入時存儲到緩存中的byte數組中,當數組存滿時,會把數組中的數據寫入文件 * 并且緩存下標歸零 * * 字符流: * 1、加入字符緩存流,增強讀取功能(readLine) * 2、更高效的讀取數據 * FileReader:內部使用InputStreamReader,解碼過程,byte->char,默認緩存大小為8k * BufferReader:默認緩存大小為8k,但可以手動指定緩存大小,把數據讀取到緩存中,減少每次轉換過程,效率更高 * 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() { //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Writer writer = new FileWriter(file,true);//追加 //為字符流提供緩沖,已達到高效讀取的目的 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() { //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字符流 Reader reader = new FileReader(file); //為字符流提供緩沖,已達到高效讀取的目的 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(); } } //緩存流輸入 不用關閉 try自動關閉 必須實現Closeable接口 private static void byteReader1(){ //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); //buf作用域在try大括號里面多條語句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(){ //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字節輸出流 InputStream in = new FileInputStream(file); //字節緩沖流 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();//自動關閉 in.close } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //緩存流輸出 private static void byteWriter(){ //目標文件 File file = new File("F:\\javatest\\lemon1.txt"); try { //字節輸出流 OutputStream out = new FileOutputStream(file,true); //緩沖流 BufferedOutputStream buf = new BufferedOutputStream(out); //內容 String info = "這里是緩沖流\r\n"; //寫入 buf.write(info.getBytes()); buf.close(); //jdk1.7以后自動關閉 out // out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
以上所述是小編給大家介紹的Java IO流之字符緩沖流詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。