FileReader 讀數據java
構造方法:數組
FileReader(String fileName) 傳遞要讀取的文件名稱ide
成員方法:spa
int read() 讀取單個字符並返回對象
int read(char[] cbuf) 一次讀取一個字符數組的數據,返回的是實際讀取字符的個數.資源
輸入流讀文件的通常步驟:it
1.建立輸入流對象io
2.調用輸入流對象的對數據方法class
3.釋放資源效率
舉例:打印文件中的內容到公屏上,一次讀取一個字符
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class DemoFileReader { public static void main(String[] args) throws IOException { // 建立輸入流對象 FileReader fr = new FileReader("a.txt"); int ch; // 調用輸入流方法讀取數據的方法 /* * ch != -1 ch=fr.read(); 故:(ch = fr.read()) != -1 */ // while ((ch = fr.read()) != -1) { System.out.println((char) ch); } // 釋放資源 fr.close(); } }
注意: a.txt必須存在,若是不存在會報系統找不到文件異常
2.上個範例是把文本內容讀取出來打印到公屏上,若是是寫入到其餘文件,是否是就變成複製了呢
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class DemoCopyFile { public static void main(String[] args) throws IOException { //建立輸入流對象 FileReader fr = new FileReader("a.txt"); //建立輸出流對象 FileWriter fw = new FileWriter("Copya.txt"); int ch; while ((ch = fr.read()) != -1) { fw.write(ch); } //釋放資源 fw.close(); fr.close(); } }
上面的例子是一次讀寫一個字符複製文本文件,效率比較低.接下來咱們看看 成員方法中一次一個字符數組的狀況.
public class DemoCopyFile { public static void main(String[] args) throws IOException { //建立輸入流對象 FileReader fr = new FileReader("a.txt"); //調用輸入流對象讀取數據的方法 char[] chs = new char[1024]; int len; /*while一共作了三件事 * 1.fr.read(chs)將數據讀取到數組中 * 2.len=fr.read(chs) 把讀取到的有效個數複製給len * 3.len != -1 判斷讀取的有效個數是否爲-1 * */ while((len = fr.read(chs))!= -1){ System.out.println(new String(chs,0,len)); } fr.close(); } }
在這裏何時用到字符流呢,通常狀況下可以使用系統記事本打開並閱讀裏面的內容的,咱們採用字符流,