基本概念

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()
  1. //构造FileReader类型的对象与文件关联
  2. FileReader fileReader = new FileReader("/Users/gaigai/Desktop/test.txt");
  3. //读取数据内容并打印
  4. int res = fileReader.read();
  5. //关闭流对象并释放有关的资源
  6. fileReader.close();

改造

  1. import java.io.FileReader;
  2. import java.io.IOException;
  3. public class FileReaderDemo {
  4. public static void main(String[] args) {
  5. FileReader fileReader = null;
  6. try {
  7. //构造FileReader类型的对象与文件关联
  8. fileReader = new FileReader("/Users/gaigai/Desktop/test.txt");
  9. //读取数据内容并打印
  10. int res = fileReader.read();
  11. System.out.println("读取到的单个字符是:" + (char)res);
  12. // 'a'
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. } finally {
  16. //关闭流对象并释放有关的资源
  17. if (null != fileReader) {
  18. try {
  19. fileReader.close();
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. }
  25. }
  26. }
  • 可以看到对应的读取内容为int类型,如果想要打印,需要转换成char类型

读取所有

  1. //和write一样,读一次对应指针往后移动一位
  2. int res = 0;
  3. while (-1 != (res = fileReader.read())){
  4. System.out.println("读取到的单个字符是:" + (char)res);
  5. }

读取部分放入新数组中

  • 读取部分内容,填入部分字符数组
  1. //准备一个字符数组来保存读取到的数据内容
  2. char[] cArr = new char[5];
  3. // 期望读满字符数组中的一部分空间,也就是读取3个字符放入数组cArr中下标从1开始的位置上
  4. int res = fileReader.read(cArr, 1, 3);
  5. System.out.println("实际读取到的字符个数是:" + res); // 3
  6. for (char cv : cArr) {
  7. System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有
  8. }
  • 读满整个字符数组
  1. //读满整个字符数组
  2. char[] cArr = new char[5];
  3. int res = fileReader.read(cArr);
  4. System.out.println("实际读取到的字符个数是:" + res); // 5
  5. for (char cv : cArr) {
  6. System.out.println("读取到的单个字符是:" + cv); // 啥也没有 a e l 啥也没有
  7. }