1. 程式人生 > >IO-字符流-FileReader

IO-字符流-FileReader

字符流 io 讀取數據

FileReader 讀數據

構造方法:

FileReader(String fileName) 傳遞要讀取的文件名稱

成員方法:

int read() 讀取單個字符並返回

int read(char[] cbuf) 一次讀取一個字符數組的數據,返回的是實際讀取字符的個數.


輸入流讀文件的一般步驟:

1.創建輸入流對象

2.調用輸入流對象的對數據方法

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();
}
}

在這裏什麽時候用到字符流呢,一般情況下能夠使用系統記事本打開並閱讀裏面的內容的,我們采用字符流,


本文出自 “xinsz08の平行時空” 博客,請務必保留此出處http://xinsz08.blog.51cto.com/10565212/1941490

IO-字符流-FileReader