В чем разница между Reader и InputStream?



в чем разница между Reader и InputStream?
И когда использовать что?
Если я могу использовать Reader для чтения символов, почему я буду использовать inputstream, я думаю, чтобы читать объекты?

712   4  

4 ответов:

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

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

вы можете обернуть InputStream и превратить его в средство чтения с помощью класса InputStreamReader.

Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);

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

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

Я думаю, что источник путаницы в том, что InputStream.read() возвращает int и Reader.read() возвращает int.

разница в том, что InputStream.read() возвращает значения байтов от 0 до 255, соответствующие исходному содержимому потока байтов и Reader.read() возвращает символьное значение, которое находится между 0 и 65357

An InputStream позволяет читать содержимое байт за байтом, например содержимое "a‡a" читается как поток из 5 байт, а именно, 97,226,128,161 и 97, где a -> U+0061 -> 0x61 -> 97 и ‡ -> U+2021 -> 0xE280A1 (utf-8 encoding of 0x2021) -> 226 128 161.

A Reader позволяет читать содержимое символ за символом, поэтому содержимое "a‡a" читается как 3 символа 97,8225 и 97 здесь a -> U+0061 -> 0x61 -> 97 и ‡ -> U+2021 -> 0x2021 -> 8225.

один принимает байты, а другой принимает символы.

Comments

    Ничего не найдено.