### 簡單的說明
一般小的字符(char)文件的讀取和寫入數據,我們使用FileReader和FileWriter類就可以實現了,但是對于大的字符(char)文件的讀取和寫入數據,性能就會有很大的問題,我們一般選擇BufferedReader和BufferedWriter來處理,也就是說BufferedReader和BufferedWriter主要的目的是提高字符(char)文件的內容讀取和寫入的性能。
### BufferedReader和BufferedWriter
### BufferedReader類
構造方法:
BufferedReader(Reader in)
創建一個有8192的字符(char)的緩存區
BufferedReader(Reader in, int size)
創建一個有size大小字符(char)的緩存區
關鍵方法:
read()
read(char[] buffer, int offset, int length)
readLine()——讀取一行數據
常用使用方式:
~~~
BufferedReader buf = new BufferedReader(new FileReader("file.java"));
~~~
### BufferedWriter類
構造方法:
BufferedWriter(Writer out)
創建一個有8192的字符(char)的緩存區
BufferedWriter(Writer out, int size)
創建一個有size大小字符(char)的緩存區
關鍵方法:
write(int oneChar)
write(String str, int offset, int count)
write(char[] buffer, int offset, int count)
newLine()——插入新的一行
flush()
主要是用來把緩存區的數據刷新到文件中去
常用使用方式:
~~~
BufferedWriter buf = new BufferedWriter(new FileWriter("file.java"));
~~~
### 一個測試的Demo
定義三個方法:
(1)testBufferedWrite方法—測試BufferedWriter
BufferedWriter的使用方法:
~~~
//1.創建一個輸入字符文件
//2.定義一個FileWriter
//3.定義一個BufferedWriter
//4.寫的操作
//5.關閉對應的流
~~~
(2)testBufferedReader方法—-向文件讀內容
BufferedReader的使用方法:
~~~
//1.創建一個File文件
//2.定義一個FileReader
//3.定義一個BufferedReader
//4.執行讀的操作
讀的操作有二種方式,一各是按char來讀,一種是按行來說。
一般來說按行來讀是更簡單,更有效的。
//5.關閉對應的流,可以只關閉最外面的流
~~~
(3)CopyFile方法—-復制字符文件
~~~
//1.定義輸入和輸出的文件
//2.分別定義FileReader,FileWriter
//3.分別定義BufferedReader,BufferedWriter
//4.實現復制功能
//5.關閉對應 的流,可以只關閉最外面的緩存流就可以
~~~
~~~
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;
public class BufferedReaderBufferedWrite {
//復制字符文件
public static void CopyFile(String src,String des){
//3.分別定義BufferedReader,BufferedWriter
BufferedReader br = null;
BufferedWriter bw = null;
try {
//1.定義二個文件
File fsrc = new File(src);
File fdes = new File(des);
//2.分別定義FileReader,FileWriter
FileReader fr = new FileReader(fsrc);
FileWriter fw = new FileWriter(fdes);
br = new BufferedReader(fr);
bw = new BufferedWriter(fw);
//4.復制操作
char[] c = new char[2];
int len;
while((len = br.read(c)) != -1){
bw.write(c, 0, len);
bw.flush();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
//5.關閉對應 的流,可以只關閉最外面的緩存流就可以
if(bw != null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(br != null){
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//測試BufferedReader
public static void testBufferedReader(){
//3.定義一個BufferedReader
BufferedReader bf = null;
try {
//1.定義一個文件
File f1= new File("testBufferedWrite.txt");
//2.定義一個FileReader
FileReader fr = new FileReader(f1);
bf = new BufferedReader(fr);
//4.執行讀的操作
//方式一
// char[] c = new char[2];
// int len;
// while((len = bf.read(c)) != -1){
// System.out.print(c);
// }
//方式二
String str;
while((str = bf.readLine()) != null){
System.out.print(str);
System.out.println();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5.關閉對應的流,可以只關閉最外面的流
if(bf != null){
try {
bf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//測試BufferedWriter
public static void testBufferedWrite(){
//3.定義一個BufferedWriter
BufferedWriter bw = null;
try {
//1.定義一個文件
File f1 = new File("testBufferedWrite.txt");
//2.定義一個FileWriter
FileWriter fw = new FileWriter(f1);
bw = new BufferedWriter(fw);
//4.寫的操作
String str = "測試BufferedWriter";
bw.write(str);
bw.newLine();
bw.write(str);
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//5.關閉對應的流
if(bw != null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
~~~
調用:
~~~
//BufferedWriter使用樣例
BufferedReaderBufferedWrite.testBufferedWrite();
//測試BufferedReader
BufferedReaderBufferedWrite.testBufferedReader();
//復制字符文件
BufferedReaderBufferedWrite.CopyFile("testBufferedWrite.txt", "testBufferedWrite_copy.txt");
~~~
參考資料:
1.BufferedWriterapi文檔
android_sdk_docs_offline/reference/java/io/BufferedWriter.html
2.BufferedReader文檔
android_sdk_docs_offline/reference/java/io/BufferedReader.html
3.BufferedOutputStream與BufferedReader視頻
[http://edu.csdn.net/course/detail/805/10967?auto_start=1](http://edu.csdn.net/course/detail/805/10967?auto_start=1)
- 前言
- Java核心技術之Comparator和Comparable在排序中的應用
- Java核心技術之容器
- Java核心技術之基本數據類型
- java核心技術之正則表達式
- java核心技術之reflect(一):一個系統學習reflect的Demo(精)
- java核心技術之IO流(一)File類
- java核心技術之IO流(二)FileInputStream和FileOutputStream
- java核心技術之IO流(三)FileReader和FileWriter
- java核心技術之IO流(四)BufferedInputStream和BufferedOutputStream
- java核心技術之IO流(五)BufferedReader和BufferedWriter
- java核心技術之IO流(六)DataInputStream和DataOutputStream