InputStreamReader vs FileReader - PullRequest
       0

InputStreamReader vs FileReader

27 голосов
/ 03 ноября 2011

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

Ответы [ 3 ]

49 голосов
/ 03 ноября 2011

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

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

Короче говоря, забудьте, что FileReader существует.

7 голосов
/ 03 ноября 2011

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

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

3 голосов
/ 03 ноября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...