一、緩沖流概要
??java緩沖流本身不具IO功能,只是在別的流上加上緩沖提高效率,像是為別的流裝上一種包裝。當(dāng)對(duì)文件或其他目標(biāo)頻繁讀寫(xiě)或操作效率低,效能差。這時(shí)使用緩沖流能夠更高效的讀寫(xiě)信息。因?yàn)榫彌_流先將數(shù)據(jù)緩存起來(lái),然后一起寫(xiě)入或讀取出來(lái)。所以說(shuō),緩沖流還是很重要的,在IO操作時(shí)記得加上緩沖流提升性能。
二、緩沖字符輸入流與緩沖字符輸出流
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class BufferedReaderAndBufferedWriter {
public static void main(String[] args){
BufferedReaderAndBufferedWriter bufferedReaderAndBufferedWriter=new BufferedReaderAndBufferedWriter();
bufferedReaderAndBufferedWriter.bufferedReaderExample();
bufferedReaderAndBufferedWriter.bufferedWriterExample();
}
public void bufferedReaderExample(){
//D盤(pán)下放入一個(gè)txt文檔命名為hello
File f=new File("D:"+File.separator+"hello.txt");
FileReader fileReader=null;
BufferedReader bufferedReader=null;
try {
fileReader=new FileReader(f);
//將原始流包裝進(jìn)入緩沖流
bufferedReader=new BufferedReader(fileReader);
char [] data=new char[2048];
bufferedReader.read(data);
System.out.println(new String(data));
} catch (Exception e) {
e.printStackTrace();
}finally{
//關(guān)閉流
try {
fileReader.close();
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void bufferedWriterExample(){
//D盤(pán)下放入一個(gè)txt文檔命名為hello
File f=new File("D:"+File.separator+"hello.txt");
Writer writer=null;
BufferedWriter bufferedWriter =null;
try {
writer=new FileWriter(f,true);
//將原始流包裝進(jìn)入緩沖流
bufferedWriter =new BufferedWriter(writer);
bufferedWriter.write("寫(xiě)入緩沖流!");
//記得刷新,否則會(huì)報(bào)錯(cuò)
bufferedWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
//關(guān)閉流
try {
writer.close();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
三、緩沖字節(jié)輸入流與緩沖字節(jié)輸出流
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class BufInputAndBufOutput {
public static void main(String[] agrs){
BufInputAndBufOutput bufInputAndBufOutput=new BufInputAndBufOutput();
bufInputAndBufOutput.bufInputExample();
bufInputAndBufOutput.bufOutputExample();
}
public void bufInputExample(){
//D盤(pán)下放入一個(gè)txt文檔命名為hello
File f=new File("D:"+File.separator+"hello.txt");
InputStream input=null;
BufferedInputStream bufInput=null;
try {
input=new FileInputStream(f);
//將原始流包裝進(jìn)入緩沖流
bufInput=new BufferedInputStream(input);
byte [] data=new byte[2048];
bufInput.read(data);
System.out.println(new String(data));
} catch (Exception e) {
e.printStackTrace();
}finally{
//關(guān)閉流
try {
input.close();
bufInput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void bufOutputExample(){
//D盤(pán)下放入一個(gè)txt文檔命名為hello
File f=new File("D:"+File.separator+"hello.txt");
OutputStream output=null;
BufferedOutputStream bufOutput =null;
try {
output=new FileOutputStream(f,true);
//將原始流包裝進(jìn)入緩沖流
bufOutput =new BufferedOutputStream(output);
bufOutput.write("寫(xiě)入緩沖流!".getBytes());
//記得刷新,否則會(huì)報(bào)錯(cuò)
bufOutput.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
//關(guān)閉流
try {
output.close();
bufOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}