FileReader
通过字符的方式读取文件,仅适合字符文件
FileReader是Reader的实现类,所以我们只需要学习Reader的方法就能正确使用FileReader类了
继承关系
Reader的成员方法
Modifier and Type | Description |
---|---|
abstract void close() | 关闭流并释放与它相关联的任何系统资源。 |
void mark(int readAheadLimit) | 标记流中的当前位置。 |
boolean markSupported() | 告诉这是否流支持的mark()操作。 |
int read() | 读取单个字符。 |
int read(char[] cbuf) | 将字符读入一个数组。 |
abstract int read(char[] cbuf, int off, int len) | 将字符读入一个数组的一部分。 |
int read(CharBuffer target) | 试图将字符读入指定的字符缓冲区中。 |
boolean ready() | 告诉是否该流已准备好阅读。 |
void reset() | 重置流。 |
long skip(long n) | 跳过的字符。 |
FileReader构造方法
Method | Description |
---|---|
Constructor and Description FileReader(File file) | 创建一个新的 FileReader,给予 File读。 |
FileReader(FileDescriptor fd) | 创建一个新的 FileReader,给予 FileDescriptor读。 |
FileReader(String fileName) | 创建一个新的 FileReader,给定要读取的文件的名称。 |
创建一个testFileReader.txt的文本文件内容如下:
Education is not the filling of a pail, but the lighting of a fire.- W. B. Yeats, English poet
经一场大梦,梦中见满眼山花如翡,如见故人,喜不自胜
用以下代码测试FileReader对字符流的读取使用情况,发现中英混合也都正常
package cn.yzy.io;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class testFileReader {
public static void main(String[] args) {
//创建源
File srcFile = new File("testFileReader.txt");
//选择流
Reader read = null;
try {
read = new FileReader(srcFile);
//FileReader读取字符流
char[] buff = new char[1024];
int len = 0;
while((len = read.read(buff)) != -1) {
String str = new String(buff, 0, len);
System.out.println(str);
System.out.println(str.length()); //返回字节长度
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(null != read) //创建流可能失败所以判断一下
read.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
与字节流的读取区别并不是太大都可以按段大小读取,只不过比字节流少了解码的过程。