logo
файлы

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'.