Java IO流之字符缓冲流
字符流:
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數組中,當數組存滿時,會把數組中的數據寫入文件
* 并且緩存下標歸零
*
* 字符流:鄭州不孕不育醫院:www.zzfkyy120.com/
* 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();
}
}
---------------------
轉載于:https://www.cnblogs.com/dream8023/p/10831334.html
總結
以上是生活随笔為你收集整理的Java IO流之字符缓冲流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino control Eepr
- 下一篇: P_C_Brules