Использование StandardCharset UTF-8 для искаженного исключения - PullRequest
0 голосов
/ 24 апреля 2020

В случае возникновения следующего исключения при чтении файла:

java.nio.charset.MalformedInputException - Input length = 1

В чем разница между использованием следующих параметров при получении Reader?

Опция 1:

return Files.newBufferedReader(Paths.get(filePath), StandardCharsets.UTF-8);

Опция 2:

return new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));

Опция 1 по-прежнему возвращает ошибку, в то время как Опция 2 проходит. Чем отличаются оба варианта?

1 Ответ

0 голосов
/ 24 апреля 2020

Чем отличаются оба варианта?

Они разные, потому что в javado c of Files.newBufferedReader(Path path, Charset cs) написано:

Методы Reader, которые читают из файла, генерируют IOException, если читается неправильно сформированная или не отображаемая последовательность байтов.

Javado c из InputStreamReader не говорит, что , Это снисходительный , и они решили исправить этот недостаток, добавив NIO.2 к языку в Java 7.

...