Байт-поток и символьный поток - PullRequest
40 голосов
/ 10 июня 2010

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

Спасибо

Ответы [ 5 ]

51 голосов
/ 10 июня 2010

Поток - это способ последовательного доступа к файлу.Байт-поток обращается к файлу побайтово.Поток байтов подходит для любого типа файла, но не совсем подходит для текстовых файлов.Например, если файл использует кодировку Unicode и символ представлен двумя байтами, поток байтов будет обрабатывать их отдельно, и вам нужно будет выполнить преобразование самостоятельно.

Поток символов будет считывать файлсимвол за символом.Для правильной работы поток символов должен иметь кодировку файла.

Несмотря на то, что документ Microsoft Word содержит текст, к нему нельзя получить доступ с помощью потока символов (это не текстовый файл).Вам нужно использовать поток байтов для доступа к нему.

10 голосов
/ 28 марта 2016

ByteStreams :

Со страницы документации Oracle относительно потоков байтов :

Программы используют потоки байтов для выполнения ввода и вывода8-битные байты.Все классы потока байтов происходят от InputStream и OutputStream.

enter image description here

Когда использовать:

Потоки байтов должны использоваться только для самых примитивных операций ввода-вывода

Когда не использовать:

Вы не должны использовать поток байтов для чтения Потоки символов

Например, для чтения текстового файла

Потоки символов:

Со страницы документации оракула о символьных потоках :

Платформа Java хранит символьные значения с использованием соглашений Unicode.Ввод / вывод потока символов автоматически переводит этот внутренний формат в локальный набор символов и из него.

Все классы потока символов происходят от Reader и Writer.

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

Существует два универсальных байтово-символических «моста» потока: InputStreamReader и OutputStreamWriter.

Когда использовать:

Для чтения символьных потоков из Socket или File символов

В итоге :

Поток байтов читает и записывает байт за раз.Мы должны избегать использования потока байтов при работе с более сложными данными.

Символьный поток и другие доступные потоки должны использоваться для обработки сложных данных.

5 голосов
/ 10 марта 2013

1. Ориентированные на характер персонажа привязаны к типу данных. Через него можно прочитать только строковый тип или символьный тип, в то время как ориентированные на байты не привязаны к какому-либо типу данных, данные любого типа могут быть прочитаны (кроме строки), только вы должны указать это.

2. Ориентированное на чтение чтение символ за символом, в то время как ориентированное на чтение чтение байтов за байтом

3.Потоки, ориентированные на характер, используют схему кодирования символов (UNICODE), тогда как ориентированные на байты не используют схему кодирования

4.Характеристики, ориентированные на потоки, также известны как потоки чтения и записи Байт-ориентированные потоки известны как потоки данных - поток ввода данных и поток вывода данных

3 голосов
/ 10 июня 2010

Читать это . Он говорит вам о разнице между байтами и символами (а также о множестве других полезных вещей)

0 голосов
/ 13 февраля 2017

Символьный поток будет читать файл символ за символом.Символьные потоки способны читать 16-битные символы (байтовые потоки читают 8-битные символы).Символьные потоки способны неявно переводить 8-битные данные в 16-битные или наоборот.Поток символов может поддерживать все типы наборов символов ASCII, Unicode, UTF-8, UTF-16 и т. Д. Но поток байтов подходит только для набора символов ASCII. Платформа Java хранит значения символов с использованием соглашений Unicode.Ввод / вывод потока символов автоматически переводит этот внутренний формат в локальный набор символов и из него.

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

...