Поток байтов и поток символов

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

Спасибо

Ответ 1

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

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

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

Ответ 2

ByteStreams

На странице документации оракала потоки байтов:

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

введите описание изображения здесь

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

Байт-потоки должны использоваться только для самого примитивного ввода-вывода

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

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

например. Чтобы прочитать текстовый файл

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

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

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

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

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

Существует два потока "моста" общего назначения: "t24 > и OutputStreamWriter.

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

Чтобы прочитать потоки символов либо из Socket, либо File символов

В резюме:

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

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

Ответ 3

Прочитайте this. Он рассказывает вам о различии между байтами и символами (а также множеством других полезных материалов)

Ответ 4

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

2. Ориентированный на символ символ читает символ символом, тогда как байт-ориентированный читает байт байтом

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

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

Ответ 5

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

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