为什么用集合存储FileReader类中read()方法返回的数值输出后内容不一致?

刚刚学到IO流的知识,了解到FileReader类中的read()方法可以读取文件,正常代码是用int类型去接受read()方法返回的数值,然后通过强制类型转换输出,那既然这样我直接使用字符集合来保存,并且输出为什么不行呢,我尝试了以后发现用这种方法输出的字符跟文件不一样,想了半天也不明白哪里出错了
正常方法读取外部文件并输出:

Demo.txt文件中的内容为:我是一个文本文档,用于测试数据的

import java.io.*;
public class Demo{
      FileReader fileReader = new FileReader("D:\\myfwy\\review\\src\\pers\\iostream\\demo.txt") 
      int data = fileReader.read();
      while(data != -1){
           System.out.print((char) data);
           data = fileReader.read();
  }
}
运行结果为:我是一个文本文档,用于测试数据的
我想的方法:
import java.io.*;
public class Demo{
      FileReader fileReader = new FlieReader("D:\\myfwy\\review\\src\\pers\\iostream\\demo.txt");
      ArrayList<Character> readList = new ArrayList<Character> ();
      readList.add((char)fileReader.read());
      for(i = 0;fileReader.read() != -1;i++){
            System.out.print(readList.get(i));
            readList.add((char)fileReader.read());
  }
}
运行结果为:我一文文,于试据
为什么这样输出的内容跟文件原本的内容不一致,希望得到解决

img

for(i = 0;fileReader.read() != -1;i++)
你这里读了一个字符,并且返回值没有赋值给变量,丢弃了

你的for循环多读了一次