Читайте также:
|
|
Для определения символьных потоков используются две иерархические структуры классов, на верху которых находятся соответственно абстрактные классы Reаder и Writer. Класс Reader и его подклассы используются для чтения, а классы Writer и его потомки - для записи данных. Конкретные классы, являющиеся подклассами Reader и Writer, действуют с символами в формате Unicode.
Символьно-ориентированные классы присутствуют в Java параллельно с байтово-ориентированными классами. Классы символьных потоков приведены в таблице 2.
Таблица 2. Классы символьных потоков
Класс символьного потока. | Описание |
Reader | Абстрактный класс, описывающий символьно-ориентированный входной поток |
Writer | Абстрактный класс, описывающий символьно-ориентированный выходной поток |
PrintWriter | Выходной поток, содержащий методы print() и println() |
InputStreamReader | Входной поток, преобразующий байты в символы |
OutputStreamWriter | Выходной поток, преобразующий символы в байты |
FileReader | Входной поток, осуществляющий чтение из файла |
FileWriter | Выходной поток, осуществляющий запись в файл |
BufferedReader | Буферизованный символьно-ориентированный входной поток |
BufferedWriter | Буферизованный символьно-ориентированный выходной поток |
CharArrayReader | Входной поток, осуществляющий чтение из символьного массива |
CharArrayWriter | Выходной поток, осуществляющий запись в символьный массив |
FilterReader | Класс для чтения символов с фильтрацией |
FilterWriter | Класс для записи символов с фильтрацией |
LineNumberReader | Входной поток, осуществляющий подсчет строк |
PipedReader | Входной поток, предназначенный для организации конвейерной обработки (канал ввода) |
PipedWriter | Выходной поток, предназначенный для организации конвейерной обработки (канал вывода) |
PushbackReader | Входной поток, позволяющий возвращать в поток прочитанные символы |
StringReader | Входной поток, осуществляющий чтение из строки |
StringWriter | Выходной поток, осуществляющий запись в строку |
Предопределенные потоки
Как вы уже знаете, во все Java-программы автоматически импортируется пакет java.lang. В этом пакете определен класс System, инкапсулирующий некоторые элементы среды выполнения программ. Помимо прочего, в нем содержатся предопределенные переменные in, out и err, представляющие потоки.
Данные поля определены как public, final и static. Это означает, что для их использования не обязательно создавать конкретный объект типа System.
Переменная System.out ссылается на стандартный выходной поток. По умолчанию данный поток связан с консолью. Переменная System.in ссылается на стандартный входной поток, соответствующий клавиатуре. И наконец, объект, на который ссылается System.err, реализует стандартный поток ошибок. Данные, выводимые в этот поток по умолчанию, поступают на консольный терминал. При необходимости, описанные выше потоки могут быть перенаправлены и на другие устройства.
System.in представляет собой объект типа InputStream; System.out и System.err — объекты типа PrintStream. Хотя эти потоки обычно используются для чтения и записи символов, они являются байтовыми потоками. Причина в том, что данные потоки были определены в исходной спецификации Java в которой, как вы знаете, символьные потоки вовсе не были предусмотрены. Как вы вскоре увидите, при необходимости для данных потоков можно создать оболочки, превратив их в символьные потоки.
1 Вопросы для текущего контроля
1. Что такое поток?
2. Какие типы потоков определены в Java?
3. Назовите встроенные потоки.
Дата добавления: 2015-07-10; просмотров: 141 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Байтовые и символьные потоки | | | Использование байтовых потоков |