считыватель считывателя в Java - PullRequest
0 голосов
/ 23 апреля 2011

inputteam читает байт каждый раз, и inputtreamreader может преобразовывать байт в символ, а затем каждый раз читает символ, и читатель также читает символ каждый раз, так в чем же разница между ними?

Ответы [ 3 ]

1 голос
/ 23 апреля 2011

InputStreamReader обрабатывает кодировку.Символ не всегда вписывается в byte (8 бит), а значение байта не всегда отображается на один и тот же символ, например, java char использует 16 бит для кодирования символа, что позволяет представлять большее числоразные персонажи.

В зависимости от источника InputStream символ может быть закодирован с помощью ASCII (1 байт), UTF-8 (1 или более байт), UTF-16 (2 или 4 байта), utf-32 (4байт) или любая другая существующая кодировка.При наличии права Charset читатель может преобразовать необработанные байты в соответствующий символ Java.

0 голосов
/ 23 апреля 2011

InputStreamReader - это реализация абстрактного класса Reader, который читает символ из InputStream, преобразовывая байты в соответствии с заданной кодировкой. Существуют и другие реализации Reader, например StringReader, которые возвращают символ из строки и не нуждаются в преобразовании кодировки.

0 голосов
/ 23 апреля 2011

Из JavaDocs:

Входной поток: Этот абстрактный класс является суперклассом всех классов, представляющих входной поток байтов

Входной поток Reader: мост от байтовых потоков к символьным потокам:Он читает байты и декодирует их в символы, используя указанный набор символов

Поток просто дает необработанные байты, считыватель может преобразовывать необработанные байты в символы для различных кодировок (ASCII / ISO / UTF).

http://download.oracle.com/javase/6/docs/api/java/io/InputStream.html http://download.oracle.com/javase/6/docs/api/java/io/InputStreamReader.html http://download.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html

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