Есть файл, содержимое - русский текст. Есть три метода считывания этого файла, представлены ниже. Почему первые два случая отрабатывают нормально, а третий - нет, и как это исправить?
import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        String fileName = "D:\My_Files-Programming\Lion.avi.part1.txt"; //Файл с кириллицей

        //Case #1 works normal
        FileReader reader1 = new FileReader(fileName);
        StringBuilder sb = new StringBuilder();
        while (reader1.ready()) {
            sb.append((char) reader1.read());
        }
        reader1.close();
        System.out.println("Case #1:\n" + sb + "\n");

        //Case #2 works normal
        BufferedReader reader2 = new BufferedReader(new FileReader(fileName));
        sb.delete(0, sb.length());
        while (reader2.ready()) {
            sb.append(reader2.readLine());
        }
        reader2.close();
        System.out.println("Case #2:\n" + sb + "\n");

        //Case #3 - some problems
        FileInputStream reader3 = new FileInputStream(fileName);
        sb.delete(0, sb.length());
        while (reader3.read() != -1) {
            sb.append((char)reader3.read());
        }
        reader3.close();
        System.out.println("Case #3:\n" + sb);
    }
}
Вывод:
Case #1:
Строка для считывания.

Case #2:
Строка для считывания.

Case #3:
¡‚€¾º°ÐÐÑ ‡¸‚‹²°½¸￿

Process finished with exit code 0
Настройки Intellij Idea: Кодировка файла: