Java IO流學習總結四:緩沖流-BufferedReader、BufferedWriter
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/54911237
本文出自【趙彥軍的博客】
在上一篇文章中Java IO流學習總結三:緩沖流-BufferedInputStream、BufferedOutputStream介紹了緩沖流中的字節流,而這一篇着重介紹緩沖流中字符流BufferedReader、BufferedWriter。
- 類的繼承關系
Reader
|__ BufferedReader、StringReader、InputStreamReader
|__ FileReader
Writer
|__ BufferedWriter、StringWriter、OutputStreamWriter
|__ FileWriter
BufferedReader
- 構造函數
BufferedReader(Reader in, int sz) //創建一個使用指定大小輸入緩沖區的緩沖字符輸入流。
BufferedReader(Reader in) //創建一個使用默認大小輸入緩沖區的緩沖字符輸入流。
- 方法
int read() //讀取單個字符。
int read(char[] cbuf, int off, int len) //將字符讀入數組的某一部分。
String readLine() //讀取一個文本行。
boolean ready() //判斷此流是否已准備好被讀取。
void reset() //將流重置到最新的標記。
long skip(long n) //跳過字符。
void close() //關閉該流並釋放與之關聯的所有資源。
void mark(int readAheadLimit) //標記流中的當前位置。
boolean markSupported() //判斷此流是否支持 mark() 操作(它一定支持)。
BufferedWriter
- 構造函數
BufferedWriter(Writer out, int sz) //創建一個使用給定大小輸出緩沖區的新緩沖字符輸出流。
BufferedWriter(Writer out) //建一個使用默認大小輸出緩沖區的緩沖字符輸出流。
- 方法
void close() // 關閉此流,但要先刷新它。
void flush() //刷新該流的緩沖。
void newLine() //寫入一個行分隔符。
void write(char[] cbuf, int off, int len) //寫入字符數組的某一部分。
void write(int c) //寫入單個字符。
void write(String s, int off, int len) //寫入字符串的某一部分。
實戰演練
復制F盤里面的一個txt文本
package com.app;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class A4 {
public static void main(String[] args) {
String filePath = "F:/123.txt" ;
String filePath2 = "F:/abc.txt" ;
File file = new File( filePath ) ;
File file2 = new File( filePath2 ) ;
copyFile( file , file2 );
}
private static void copyFile( File oldFile , File newFile ){
Reader reader = null ;
BufferedReader bufferedReader = null ;
Writer writer = null ;
BufferedWriter bufferedWriter = null ;
try {
reader = new FileReader( oldFile ) ;
bufferedReader = new BufferedReader( reader ) ;
writer = new FileWriter( newFile ) ;
bufferedWriter = new BufferedWriter( writer ) ;
String result = null ; //每次讀取一行的內容
while ( (result = bufferedReader.readLine() ) != null ){
bufferedWriter.write( result ); //把內容寫入文件
bufferedWriter.newLine(); //換行,result 是一行數據,所以沒寫一行就要換行
}
bufferedWriter.flush(); //強制把數組內容寫入文件
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
try {
bufferedWriter.close(); //關閉輸出流
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedReader.close(); //關閉輸入流
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果:

個人微信號:zhaoyanjun125 , 歡迎關注

