Главная страница
Навигация по странице:

  • Класс байтового потока Описание

  • Класс символьного потока Описание

  • Ответы на вопросы по ревью 4. Java io. Ключевым понятием здесь является понятие потока


    Скачать 1.93 Mb.
    НазваниеJava io. Ключевым понятием здесь является понятие потока
    Дата03.07.2022
    Размер1.93 Mb.
    Формат файлаdoc
    Имя файлаОтветы на вопросы по ревью 4.doc
    ТипДокументы
    #623608
    страница7 из 39
    1   2   3   4   5   6   7   8   9   10   ...   39

    Организация системы ввода-вывода в Java на потоках


    Ввод-вывод в программах на Java осуществляется посредством потоков. Поток — это некая абстракция производства или потребления информации. С физическим устройством поток связывает система ввода-вывода. Все потоки действуют одинаково — даже если они связаны с разными физическими устройствами. Поэтому классы и методы ввода-вывода могут применяться к самым разным типам устройств. Например, методами вывода на консоль можно пользоваться и для вывода в файл на диске. Для реализации потоков используется иерархия классов, содержащихся в пакете java.io.

    Байтовые и символьные потоки


    В современных версиях Java определены два типа потоков: байтовые и символьные. (В первоначальных версиях Java были доступны только байтовые потоки, тогда как символьные потоки были реализованы в дальнейшем.) Байтовые потоки предоставляют удобные средства для ввода и вывода байтов. Они используются, например, при чтении и записи двоичных данных. В особенности они полезны для обращения с файлами. А символьные потоки ориентированы на обмен символьными данными. В них применяется кодировка в уникоде (Unicode), а следовательно, программы, в которых используются символьные потоки, легко поддаются локализации на разные языки мира. В некоторых случаях символьные потоки обеспечивают более высокую эффективность по сравнению с байтовыми.

    Необходимость поддерживать два разных типа потоков ввода-вывода привела к созданию двух иерархий классов (одна для байтовых, другая для символьных данных). Из-за того что число классов достаточно велико, на первый взгляд система ввода-вывода кажется сложнее, чем она есть на самом деле. Но не следует забывать, что функциональные возможности для байтовых потоков дублируются соответствующими средствами для символьных потоков.

    Следует также иметь в виду, что на самом нижнем уровне все средства ввода-вывода имеют байтовую организацию. А символьные потоки лишь предоставляют удобные и эффективные инструменты для обработки символов.

    Классы байтовых потоков


    Для определения байтовых потоков служат две иерархии классов. На их вершине находятся два абстрактных класса: InputStream и OutputStream. В классе InputStream определены свойства, общие для байтовых потоков ввода, а в классе OutputStream — свойства, общие для байтовых потоков вывода.

    Производными от классов InputStream и OutputStream являются конкретные подклассы, реализующие различные функциональные возможности и учитывающие особенности обмена данными с разными устройствами, например ввода-вывода в файлы на диске. Классы байтовых потоков приведены в табл. 10.1. Не следует пугаться большого количества этих классов: изучив один из них, легко освоить остальные.

    Таблица 10.1. Классы байтовых потоков

    Класс байтового потока

    Описание

    BufferedlnputStream

    Буферизованный поток ввода

    BufferedOutputStream

    Буферизованный поток вывода

    ByteArrayInputStream

    Поток ввода для чтения из байтового массива

    ByteArrayOutputStream

    Поток вывода для записи в байтовый массив

    DatalnputStream

    Поток ввода с методами для чтения стандартных типов данных Java

    DataOutputStream

    Поток вывода с методами для записи стандартных типов данных Java

    FileInputStream

    Поток ввода для чтения из файла

    FileOutputStream

    Поток вывода для записи в файл

    FilterlnputStream

    Подкласс, производный от класса InputStream

    FilterOutputStream

    Подкласс, производный от класса OutputStream

    InputStream

    Абстрактный класс, описывающий потоковый ввод

    ObjectInputStream

    Поток для ввода объектов

    ObjectOutputStream

    Поток для вывода объектов

    OutputStream

    Абстрактный класс, описывающий потоковый вывод

    PipedlnputStream

    Поток конвейерного ввода

    PipedOutputStream

    Поток конвейерного вывода

    PrintStream

    Поток вывода с методами print() и println()

    PushbacklnputStream

    Поток ввода с возвратом прочитанных байтов в поток

    RandomAccessFile

    Класс, поддерживающий файловый ввод-вывод с произвольным доступом

    SequenceInputStream

    Поток ввода, сочетающий в себе несколько потоков ввода для поочередного чтения данных из них

    Классы символьных потоков


    Для определения символьных потоков служат две иерархические структуры классов, на вершине которых находятся абстрактные классы Reader и Writer соответственно. Класс Reader и его подклассы используются для чтения, а класс Writer и его подклассы — для записи данных. Конкретные классы, производные от классов Reader и Writer, оперируют символами в уникоде.

    Классы, производные от классов Reader и Writer, предназначены для выполнения различных операций ввода-вывода символов. Символьные классы присутствуют в Java параллельно с байтовыми классами. Классы символьных потоков приведены в табл. 10.2. Таблица 10.2. Классы символьных потоков

    Класс символьного потока

    Описание

    BufferedReader

    Буферизованный поток ввода символов

    BufferedWriter

    Буферизованный поток вывода символов

    CharArrayReader

    Поток ввода для чтения из символьного массива

    CharArrayWriter

    Поток вывода для записи в символьный массив

    FileReader

    Поток ввода для чтения символов из файла

    FileWriter

    Поток вывода для записи символов в файл

    FilterReader

    Класс для чтения символов с фильтрацией

    FilterWriter

    Класс для записи символов с фильтрацией

    InputStreamReader

    Поток ввода с преобразованием байтов в символы

    LineNumberReader

    Поток ввода с подсчетом символьных строк

    OutputStreamWriter

    Поток вывода с преобразованием символов в байты

    PipedReader

    Поток конвейерного ввода

    PipedWriter

    Поток конвейерного вывода

    PrintWriter

    Поток вывода с методами print() и println()

    PushbackReader

    Поток ввода с возвратом прочитанных символов в поток

    Reader

    Абстрактный класс, описывающий потоковый ввод символов

    StringReader

    Поток ввода для чтения из символьной строки

    StringWriter

    Поток вывода для записи в символьную строку

    Writer

    Абстрактный класс, описывающий потоковый вывод символов
    1   2   3   4   5   6   7   8   9   10   ...   39


    написать администратору сайта