基本概念
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); // 3
for (char cv : cArr) {
System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有
}
- 读满整个字符数组
//读满整个字符数组
char[] cArr = new char[5];
int res = fileReader.read(cArr);
System.out.println("实际读取到的字符个数是:" + res); // 5
for (char cv : cArr) {
System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有
}