1.3Потоковые классы
Все классы пакета java.io можно разделить на две группы: классы, создающие поток, и классы, управляющие потоком.
Классы, создающие потоки, в свою очередь, можно разделить на пять групп:
• классы, создающие потоки, связанные с файлами:
FileReader FileInputStream
FileWriterFile OutputStream
RandomAccessFile
• классы, создающие потоки, связанные с массивами:
CharArrayReader ByteArraylnputStream
CharArrayWriter ByteArrayOutputStream
• классы, создающие каналы обмена информацией между подпроцессами:
PipedReader PipedInputStream
PipedWriter PipedOutputStream
• классы, создающие символьные потоки, связанные со строкой:
StringReader
StringWriter
• классы, создающие байтовые потоки из объектов Java:
ObjectlnputStream
ObjectOutputStream
Слева перечислены классы символьных потоков, справа — классы байтовых потоков.
Классы, управляющие потоком, получают в своих конструкторах имеющийся поток и создают новый поток. Можно представлять их себе как переходник (преобразование данных из одного представления в другое).
Четыре класса созданы специально для преобразования потоков:
FilterReader FilterlnputStream
FilterWriter FilterOutputStream
Сами по себе эти классы бесполезны — они выполняют тождественное преобразование. Их следует расширять, переопределяя методы ввода/вывода. Но для байтовых фильтров есть полезные расширения, которым соответствуют некоторые символьные классы.
Четыре класса выполняют буферизованный ввод/вывод:
BufferedReader BufferedlnputStream
BufferedWriter BufferedOutputStream
Два класса преобразуют поток байтов, образующих восемь простых типов Java, в эти самые типы:
DataInputStream DataOutputStream
Два класса содержат методы, позволяющие вернуть несколько символов или байтов во входной поток:
PushbackReader PushbackInputStream
Два класса связаны с выводом на строчные устройства — экран дисплея, принтер:
PrintWriter PrintStream
Два класса связывают байтовый и символьный потоки:
• InputStreamReader — преобразует входной байтовый поток в символьный поток;
• OutputStreamWriter — преобразует выходной символьный поток в байтовый поток.
Класс streamTokenizer позволяет разобрать входной символьный поток на отдельные элементы (tokens).
Из управляющих классов выделяется класс SequenceInputStream, сливающий несколько потоков, заданных в конструкторе, в один поток, и класс LineNumberReader, который считывает выходной символьный поток построчно. Строки в потоке разделяются символами '\n' и/или '\r'.
- 1Потоки ввода/вывода
- 1.1Потоки в Java
- 1.2Иерархия классов
- 1.3Потоковые классы
- 1.4Консольный ввод/вывод
- 1.5Файловый ввод/вывод
- 1.6Получение свойств файла
- 1.7Буферизованный ввод/вывод
- 1.8Поток простых типов Java
- 1.9Кодировка utf-8
- 1.10Прямой доступ к файлу
- 1.11Каналы обмена информацией
- 1.12Сериализация объектов
- 1.13Печать в Java
- 1.14Печать средствами Java 2d
- 1.15Печать файла
- 1.16Печать страниц с разными параметрами