Читайте также: |
|
В современных версиях определены два типа потоков: байтовые и символьные. (Первоначально разработчикам Java-программ были доступны только байтовые потоки; символьные потоки были реализованы несколько позже.) Байтовые потоки предоставляют удобные средства для ввода и вывода байтов. Они используются, например, при чтении и записи двоичных данных. В особенности они полезны при работе с файлами. Символьные потоки ориентированы на обмен символьными данными. В них используется кодировка Unicode, следовательно, программы, использующие их, легко поддаются интернационализации.
В некоторых случаях символьные потоки обеспечивают более высокую эффектность по сравнению с байтовыми.
Необходимость поддерживать два различных типа потоков привела к созданию двух иерархий классов (одна для байтовых, другая для символьных данных). Из-за того что число классов достаточно велико, на первый взгляд система ввода-вывода кажется сложнее, чем она есть на самом деле. Однако следует помнить, полнофункциональные возможности для байтовых потоков дублируются соответствующими средствами символьных потоков.
Следует заметить, что на самом нижнем уровне все средства ввода-вывода байтово-ориентированы. Символьные потоки лишь предоставляют удобные и эффективные инструменты для поддержки символов.
Классы байтовых потоков
Для определения байтовых потоков используются две иерархии классов. На вершинах их находятся два абстрактных класса: InputStream и OutputStream.
В InputStream определены элементы, общие для входных байтовых потоков, в OutputStream — элементы, общие для выходных байтовых потоков.
Потомками InputStream и OutputStream являются конкретные подклассы, реализующие различные функциональные возможности и учитывающие особенности обмена с различными устройствами, например файлами на диске.
Классы байтовых потоков приведены в таблице 1. Не следует пугаться большого числа классов: изучив один из них, легко освоить остальные.
Таблица 1. Классы байтовых потоков
Класс байтового потока | Описание |
InputStream | Абстрактный класс, описывающий входной поток |
OutputStream | Абстрактный класс, описывающий выходной поток |
PrintStream | Выходной поток, содержащий методы print() и println() |
FileInputStream | Входной поток, осуществляющий чтение из файла |
FileOutputStream | Выходной поток, осуществляющий запись в файл |
RandomAccessFile | Класс, поддерживающий обмен с файлом произвольного доступа |
BufferedInputStream | Буферизованный входной поток |
BufferedOutputStream | Буферизованный выходной поток |
ByteArrayInputStream | Входной поток, осуществляющий чтение из байт-массива |
ByteArrayOutputStream | Выходной поток, осуществляющий запись в байт-массив |
FilterInputStream | Подкласс InputStream |
FilterOutputStream | Подкласс OutputStream |
DataInputStream | Входной поток, содержащий методы для чтения стандартных типов данных Java |
DataOutputStream | Выходной поток, содержащий методы для записи стандартных типов данных Java |
ObjectInputStream | Входной поток для объектов |
ObjectOutputStream | Выходной поток для объектов |
PipedInputStream | Входной поток для организации конвейерной обработки |
PipedOutputStream | Выходной поток для организации конвейерной обработки |
PushbackInputStream | Входной поток, позволяющий возвращать в поток прочитанные байты |
SequenceInputStream | Входной поток, который представляет собой сочетания нескольких входных потоков и организует последовательное чтение одного потока за другим |
Дата добавления: 2015-07-10; просмотров: 180 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Настоящѣе и Будущѣе Руской Рѣчи. | | | Классы символьных потоков |