{
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String filename = reader.readLine();
        FileReader fr = new FileReader(filename);
        List<String> list = new ArrayList<>();
        reader.close();
        reader = new BufferedReader(fr);
        while(reader.ready()) {
            list.add(reader.readLine());
        }
        for(String str : list) {
            StringBuilder b = new StringBuilder(str);
            System.out.println(b.reverse().toString());
        }
        reader.close();
        fr.close();
    }
}
Объясните почему этот код считывает только первую строку?
while(fr.ready()) {
            list.add(reader.readLine());
        }
И почему этот код тоже считывает только первую строку?
while(fr.ready()) {
            list.add(new BufferedReader(fr).readLine());
        }