Потоки ввода/вывода
Сами по себе эти классы бесполезны – они выполняют тождественное преобразование. Их следует расширять, переопределяя методы ввода/вывода. Но для байтовых фильтров есть полезные расширения, которым соответствуют некоторые символьные классы. Перечислим их.
Четыре класса выполняют буферизованный ввод/вывод:
- BufferedReader
- BufferedlnputStream
- BufferedWriter
- BufferedOutputStream
Два класса преобразуют поток байтов, образующих восемь простых типов Java, в эти самые типы:
- DatalnputStream
- DataOutputStream
Два класса содержат методы, позволяющие вернуть несколько символов или байтов во входной поток:
- PushbackReader
- PushbacklnputStream
Два класса связаны с выводом на строчные устройства – экран дисплея, принтер:
- PrintWriter
- PrintStream
Два класса связывают байтовый и символьный потоки:
- inputstreamReader – преобразует входной байтовый поток в символьный поток;
- Outputstreamwriter – преобразует выходной символьный поток в байтовый поток.
Класс streamTokenizer позволяет разобрать входной символьный поток на отдельные элементы (tokens) подобно тому, как класс stringTokenizer, рассмотренный нами в главе 5, разбирал строку.
Из управляющих классов выделяется класс sequenceinputstream, сливающий несколько потоков, заданных в конструкторе, в один поток, и класс LineNumberReader, "умеющий" читать выходной символьный поток построчно. Строки в потоке разделяются символами '\n' и/или '\г'.
Этот обзор классов ввода/вывода немного проясняет положение, но не объясняет, как их использовать. Перейдем к рассмотрению реальных ситуаций.