Есть файл, содержимое - русский текст. Есть три метода считывания этого файла, представлены ниже. Почему первые два случая отрабатывают нормально, а третий - нет, и как это исправить?
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:
Кодировка файла: