Java IO 的流,有三个分类的维度:
- 输入流 or 输出流
- 节点流 or 处理流
- 字节流 or 字符流
FileReader和FileWriter是Java IO流中用于处理字符文件读取和写入的两个类,它们分别继承自Reader和Writer,是处理文本文件的便利类
一 FileReader(字符流、节点流、输入流)
1. 定义与用途
- FileReader类用于从文本文件读取数据,每次读取一个字符或者一个字符数组。它继承自InputStreamReader,并默认使用平台默认的字符编码来解码文件内容。
2. 构造方法
- FileReader(File file): 根据给定的File对象构造一个FileReader对象。
- FileReader(String fileName): 根据给定的文件名构造一个FileReader对象。
- FileReader(FileDescriptor fd): 构造一个与给定文件描述符相关联的FileReader对象。
3. 常用方法
- int read(): 读取文件中的下一个字符,并返回它。如果到达文件末尾,则返回-1。
- int read(char[] cbuf, int off, int len): 读取文件中的字符,并将它们存储到字符数组cbuf中,从cbuf[off]开始的位置存储,最多读取len个字符。返回实际读取的字符个数,如果到达文件末尾,则返回-1。
- void close(): 关闭流并释放与流相关联的任何系统资源。
4. 注意事项
- FileReader要求文件必须存在,否则将抛出FileNotFoundException。
- 读取文件时,建议使用try-with-resources语句或try-catch-finally语句来确保流资源被正确关闭。
5. 示例一:使用 read() 单个字符读取
下面的代码实现了功能:读取文件内容,并显示。
在 d:\abc.txt
文件中,有一行“hello,youkuaiyun.com” 文字;使用了 read()
方法,单个字符读入,并打印出来。
public class FileReaderDemo {
/**
* 读取文件内容,并显示
*/
@Test
public void fileReader(){
String filePath = "d:\\abc.txt";
int data = 0;
try {
FileReader fileReader = new FileReader(filePath);
//使用read循环读取,单个字符读入
while((data = fileReader.read())!=-1){
System.out.print((char) data);
}
} catch (IOException e) {
e.