基本概念
java.io.FileReader类主要从文本文件读取数据内容
常用方法
| 方法声明 | 功能介绍 |
|---|---|
FileReader(String fileName) |
根据参数指定的文件名构造对象 |
int read() |
读取单个字符的数据并返回,返回-1表示读取到末尾 |
int read(char cbuf[], int offset, int length) |
目标缓冲区,开始存储字符的偏移量,要读取的最大字符数 返回读取到的字符个数,返回-1表示读取到末尾 |
int read(char cbuf[]) |
从此输入流中将最多 cbuf.length 个字符的数据读入字符数组中, 返回读取到的字符个数,返回-1表示读取到末尾 |
void close() |
关闭流对象并释放有关的资源 |
声明、读取、关闭
FileReader(String fileName)int read()void close()
//构造FileReader类型的对象与文件关联FileReader fileReader = new FileReader("/Users/gaigai/Desktop/test.txt");//读取数据内容并打印int res = fileReader.read();//关闭流对象并释放有关的资源fileReader.close();
改造
import java.io.FileReader;import java.io.IOException;public class FileReaderDemo {public static void main(String[] args) {FileReader fileReader = null;try {//构造FileReader类型的对象与文件关联fileReader = new FileReader("/Users/gaigai/Desktop/test.txt");//读取数据内容并打印int res = fileReader.read();System.out.println("读取到的单个字符是:" + (char)res);// 'a'} catch (IOException e) {e.printStackTrace();} finally {//关闭流对象并释放有关的资源if (null != fileReader) {try {fileReader.close();} catch (IOException e) {e.printStackTrace();}}}}}
- 可以看到对应的读取内容为int类型,如果想要打印,需要转换成char类型
读取所有
//和write一样,读一次对应指针往后移动一位int res = 0;while (-1 != (res = fileReader.read())){System.out.println("读取到的单个字符是:" + (char)res);}
读取部分放入新数组中
- 读取部分内容,填入部分字符数组
//准备一个字符数组来保存读取到的数据内容char[] cArr = new char[5];// 期望读满字符数组中的一部分空间,也就是读取3个字符放入数组cArr中下标从1开始的位置上int res = fileReader.read(cArr, 1, 3);System.out.println("实际读取到的字符个数是:" + res); // 3for (char cv : cArr) {System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有}
- 读满整个字符数组
//读满整个字符数组char[] cArr = new char[5];int res = fileReader.read(cArr);System.out.println("实际读取到的字符个数是:" + res); // 5for (char cv : cArr) {System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有}
