Reader(字符流讀取)
java.io.Reader
是一個抽象類, 只能用來操作文本文件
Reader常用實現類的繼承關系
- java.lang.Object
java.io.Reader
- java.io.InputStreamReader
java.io.FileReader
java.io.BufferedReader
- java.io.InputStreamReader
常用子類就是FileReader和 BufferedReader
Reader共性方法(子類通用)
返回值 | 方法 | 說明 |
---|---|---|
abstract void | close() | 關閉並釋放流 |
int | read() | 讀取單個字符 |
int | read(char[] cbuf) | 將字符讀入數組。 |
abstract int | read(char[] cbuf, int off, int len) | 將字符讀入數組的某一部分。 |
int | read(CharBuffer target) | 試圖將字符讀入指定的字符緩沖區。 |
FileReader子類
用於讀取字符流。讀取字符文件的便捷類。
構造方法
方法 | 說明 |
---|---|
FileReader(File file) | 傳入一個File對象 |
FileReader(String filePath) | 傳入一個文件路徑字符串 |
使用實例:
try {
// 1. 創建對象
String path = "D:\\DEV\\eclipse\\workspace\\day13\\testIO.txt";
Reader in = new FileReader(path);
// 第二種創建方式
// Reader in = new FileReader(new File(path));
// 2. 開始讀取
int b = 0;
while ((b = in.read()) != -1) {
System.out.println(b);
}
// 3. 釋放
in.close();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader子類
從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。可以指定緩沖區的大小,或者可使用默認的大小。
構造方法
方法 | 說明 |
---|---|
BufferedReader(Reader in) | 一般傳入一個FileReader對象 |
特有方法
返回值 | 方法 | 說明 |
---|---|---|
String | readLine() | 讀取一行 |
使用實例:
FileInputStream fis = new FileInputStream("src/day08/BRDemo.java");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
/*
* BufferedReader提供了按行讀取方法:
* String readLine()
* 連續讀取若干字符,直到讀取到換行符為止
* 並將換行符之間讀取到的字符以一個字符串返回
* 若返回值為NULL,則表示讀取到末尾。
* 注意:該字符串不包含最后的換行符。
*
*/
String line = null;
while((line = br.readLine())!=null){
System.out.println(line); // 一行一行讀
}
br.close();