В чем разница между Reader и InputStream?
В чем разница между Reader и InputStream? А 9X_java-se когда что использовать? Если я могу использовать 9X_files Reader для чтения символов, почему я буду 9X_openjdk использовать поток ввода, я думаю, для чтения 9X_jdk объектов?
- Что касается «Я предполагаю читать объекты?», Существуют специальные потоки ввода / вывода для чтения / записи объектов Java. Это ObjectInputS ...
Ответ #1
Ответ на вопрос: В чем разница между Reader и InputStream?
InputStream - это необработанный метод получения 9X_inputstream информации из ресурса. Он захватывает данные 9X_java побайтно, не выполняя никакого преобразования. Если 9X_.java вы читаете данные изображения или любой 9X_j2se двоичный файл, этот поток следует использовать.
Reader 9X_fileinputstream разработан для символьных потоков. Если 9X_core-java информация, которую вы читаете, представляет 9X_jre собой весь текст, то Reader позаботится 9X_j2se о декодировании символов за вас и предоставит 9X_java-api вам символы Unicode из необработанного входного 9X_j2se потока. Если вы читаете текст любого типа, этот 9X_jdk поток следует использовать.
Вы можете обернуть 9X_java InputStream и превратить его в Reader с 9X_files помощью класса InputStreamReader.
Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
Ответ #2
Ответ на вопрос: В чем разница между Reader и InputStream?
InputStreams используются для чтения байтов 9X_filereader из потока. Поэтому они полезны для двоичных 9X_javax данных, таких как изображения, видео и сериализованные 9X_j2se объекты.
С другой стороны, считыватели представляют 9X_oraclejdk собой символьные потоки, поэтому их лучше 9X_jre всего использовать для чтения символьных 9X_java-api данных.
Ответ #3
Ответ на вопрос: В чем разница между Reader и InputStream?
Я предполагаю, что причиной путаницы является 9X_j2se то, что InputStream.read()
возвращает int
, а Reader.read()
также возвращает 9X_java-se int
.
Разница в том, что InputStream.read()
возвращает байтовые 9X_oraclejdk значения от 0 до 255, соответствующие необработанному 9X_java-se содержимому байтового потока, а Reader.read()
возвращает 9X_java-libraries символьное значение от 0 до 65357. (поскольку 9X_file существует 65358 различных кодовых точек 9X_core-java Unicode)
InputStream
позволяет читать содержимое байтом 9X_.java за байтом, например, содержимое «a ‡ a» состоит 9X_java-libraries из 3 символов, но закодировано в 5 байтах 9X_jre в UTF-8. Таким образом, с Inputstream
вы можете прочитать 9X_java-api его как поток из 5 байтов (каждый из которых 9X_fileinputstream представлен как int
между 0 и 255), что приведет 9X_java-libraries к 97
, 226
, 128
, 161
и 97
где
a -> U+0061 -> 0x61 (hex) -> 97 (dec)
‡ -> U+2021 -> 0xE280A1 (utf-8 encoding of 0x2021) -> 226 128 161 (1 int per byte)
a -> U+0061 -> 0x61 (hex) -> 97 (dec)
Reader
позволяет читать содержимое 9X_filereader символ за символом, поэтому содержимое «a 9X_filereader ‡ a» читается как 3 символа 97
, 8225
и 97
где
a -> U+0061 -> 0x61 -> 97
‡ -> U+2021 -> 0x2021 -> 8225 (single int, not 3)
a -> U+0061 -> 0x61 -> 97
Символ 9X_java-se ‡ упоминается как U+2021 in Unicode
Ответ #4
Ответ на вопрос: В чем разница между Reader и InputStream?
Один принимает байты, а другой - символы.
9X_filereader
Ответ #5
Ответ на вопрос: В чем разница между Reader и InputStream?
InputStream accept byte , Читатель принимает 9X_j2se символ, В Java один символ = два байта, и 9X_oraclejdk Читатель использует буфер, InputStream не 9X_java использует. Все файлы хранятся на диске 9X_j2se или передаются на основе байтов, включая 9X_core-java изображения и видео, но символ находится 9X_file в памяти, поэтому InputStream используется 9X_jdk часто.
-
5
-
5
-
3
-
2
-
6
-
7
-
6
-
5
-
2
-
1
-
4
-
2
-
3
-
6
-
5
-
1
-
5
-
3
-
5
-
4
-
1
-
4
-
3
-
6
-
1
-
1
-
2
-
2
-
2
-
2
-
10
-
2
-
2
-
3
-
4
-
5
-
6
-
5
-
2
-
4
-
3
-
6
-
2
-
2
-
4
-
3
-
2
-
4
-
2
-
3