Подтвердить что ты не робот

InputStreamReader против FileReader

Кажется, я не могу определить разницу между InputStreamReader и FileReader, кроме того, как они инициализируются. Есть ли какая-либо польза от использования того или другого? Большинство других статей охватывают FileInputStream vs InputStreamReader, но вместо этого я противопоставляю FileReader. Мне кажется, что обе они имеют ту же цель.

4b9b3361

Ответ 1

Во-первых, InputStreamReader может обрабатывать все входные потоки, а не только файлы. Другими примерами являются сетевые подключения, ресурсы classpath и файлы ZIP.

Во-вторых, FileReader до тех пор, пока Java 11 не позволяла вам указывать кодировку, а вместо этого использовала только кодировку по умолчанию для платформы, что делало ее практически бесполезной, поскольку ее использование приводило бы к повреждению данных, когда код запускался в системах с другой платформой по умолчанию. кодировок.

Начиная с Java 11, FileReader является полезным ярлыком для наматывания InputStreamReader вокруг FileInputStream.

Ответ 2

FileReader читает символ из файла в файловой системе. InputStreamReader считывает символы из любого входного потока. Каналом потока является FileInputStream, но также может быть потоком, полученным из сокета, HTTP-соединения, блочной базы данных и т.д.

Обычно я предпочитаю использовать InputStreamReader, который обертывает FileInputStream для чтения из файла, потому что он позволяет указать конкретную кодировку символов.

Ответ 3

FileReader расширяет InputStreamReader. Единственное отличие состоит в том, что FileReader имеет конструкторы, которые предполагают, что вы читаете из файла, такого как String filename, File file и FileDescriptor fd

Я предлагаю вам взглянуть на источник для FileReader, чтобы узнать больше.