BufferedReader和BufferedWriter都分別是Reader和Writer的子類,構造器中參數要求傳入是Reader和Writer下的子類就行,如
new BufferedReader(new FileReader("IOTest.java"));
FileReader就是Reader的一個子孫類
1. 用BufferedReader讀取一個文件內容然后輸出到控制台
使用readLine()讀取一行
readLine() 例子:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferReaderDemo1 {
public static void main(String[] args) {
BufferedReader reader = null;
try {
//創建一個高效緩存字符輸入流對象 路徑隨意更改
reader = new BufferedReader(new FileReader("CopyDemo1.java"));
String line = null;
//讀取每一行
while((line = reader.readLine()) != null){
//打印一行
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//關閉外層的對象的時候,內層的資源會自動被關閉
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2. 用BufferedReader和BufferedWriter讀取一個文件內容然后寫到另一個文件(copy過去)
import java.io.*;
public class CopyTest {
public static void main(String[] args) {
BufferedReader reader = null;
BufferedWriter writer = null;
try {
//創建高效緩沖輸入流 路徑隨意
reader = new BufferedReader(new FileReader("src/cn/demo/IOTest.java"));
//創建高效緩沖輸出流 路徑隨意
writer = new BufferedWriter(new FileWriter("IOTest.java"));
//創建一個讀取一行的變量
String line = null;
while((line = reader.readLine()) != null){
//把讀入的這一行數據寫入到高效緩沖字符輸出流里面
writer.write(line);
//換行
writer.newLine();
//刷新緩存
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(writer != null){
writer.close();
}
if(reader != null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}