FileReader類: 用於讀取字符流的一個類
構造方法:
FileReader(File file)
創建一個新的 FileReader ,給出 File讀取。
FileReader(FileDescriptor fd)
創建一個新的 FileReader ,給定 FileDescriptor讀取。
FileReader(String fileName)
創建一個新的 FileReader ,給定要讀取的文件的名稱。
方法:
.read()
讀取一個字符
.read(char[] cbuf)
讀取一個字符串
.......
很多重載的方法
.close()
關閉流
.....
還有可以看API
例子:
這裏把異常拋出,不進行捕捉了
demo.txt 文本文件中放着abcde
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
int ch = fr.read(); //讀取一個
System.out.println(ch); 輸出
}
}
運行結果: 97
如果要讓它輸出原本的a,則需要進行強制類型轉換
System.out.println((char)ch);
運行結果: a
如果我們想要它全部輸出的話,可以用循環
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
int ch= 0;
while((ch = fr.read()) != -1) {
System.out.print((char)ch); //輸出
}
}
}
運行結果:
利用數組進行存儲再進行讀取
例子:
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
}
}
運行結果:
如果我們多次取值呢?
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
}
}
運行結果:
爲什麼會這樣子呢?
我們第一次的時候數組是空的
於是把abc放進去之後
len = 3
後面繼續讀取 因爲後面已經沒有空間了,所以會重頭開始
於是len = 2
因爲第三次讀取因爲已經到底了
len = -1 告知錯誤
所以還是輸出原來的
所以我們可以重新寫一個輸出
例子:
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
while((len = fr.read(ch)) != -1) {
System.out.println(len+":"+new String(ch,0,len));
}
}
}
運行結果: