112.FileReader字符流

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

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

猜你喜欢

转载自blog.csdn.net/qq_43808700/article/details/107650768
今日推荐