112.FileReader字符流

FileReader

通过字符的方式读取文件,仅适合字符文件

FileReader是Reader的实现类,所以我们只需要学习Reader的方法就能正确使用FileReader类了

继承关系
Reader的成员方法
Modifier and TypeDescription
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构造方法
MethodDescription
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();
			}
		}
	}
}

与字节流的读取区别并不是太大都可以按段大小读取,只不过比字节流少了解码的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值