Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Потоки ввода-вывода информацииСодержание книги
Поиск на нашем сайте Java-программы выполняют ввод-вывод через потоки. Поток является абстракцией, которая или производит или потребляет информацию. Поток связывается с физическим устройством с помощью системы ввода-вывода. Ввод Вывод - клавиатура - консоль - файл - файл - сетевой разъем - сетевое соединение Все потоки ведут себя одинаковым образом, хотя фактически физические устройства, с которыми они связаны, могут сильно различаться. Используя потоки одни и те же классы и методы ввода-вывода можно применять к устройствам любого типа, то есть поток ввода может извлекать много различных видов входных данных: из клавиатуры, из файла, из сетевого разъёма. Поток вывода также может обратиться к консоли, к файлу, к сетевому соединению (сокету). Благодаря потокам программа может выполнить ввод-вывод, не понимая различий между клавиатурой и сетью. Java реализует потоки с помощью иерархии классов, определённых в пакете java.io.
Байтовые и символьные потоки
Рис. 4.1. Потоки ввода-вывода
В Java2 определены 2 типа потоков: байтовые и символьные. Байтовые потоки представляют удобные средства для обработки ввода и вывода байтов. Используются при чтении и записи данных в двоичном коде. Символьные потоки представляют удобные средства для обработки ввода и вывода символов. Они используют Unicode и могут быть интернационализированы. Версия Java1.0 не включала символьные потоки и весь ввод-вывод был байтовым. На самом низком уровне весь ввод-вывод всё ёщё байтовый.
Классы байтовых потоков Байтовые потоки определяются в двух иерархиях классов. На верху этой иерархии два абстрактных класса: InputStream и OutputStream. Каждый из этих абстрактных классов имеет несколько конкретных подклассов, которые обрабатывают различия между разными устройствами: дисковые файлы, сетевые соединения, буферы памяти. Абстрактные классы InputStream и OutputStream определяют несколько ключевых методов, которые реализуются другими поточными классами. Методы read(), write() переопределяются в производных классах.
Таблица 4.1 Классы байтовых потоков
Классы символьных потоков Определены в двух иерархиях классов: Reader и Writer. Они обрабатывают потоки символов Unicode. Абстрактные классы Reader и Writer определяют методы read(), write(), которые реализуются другими поточными классами.
Таблица 4.2 Классы символьных потоков
Предопределённые потоки Все программы Java автоматически импортируют пакет java.lang. Этот пакет определяет класс с именем System, который инкапсулирует некоторые аспекты исполнительной среды Java. Класс System содержит 3 предопределённые поточные переменные: in, out, err, объявленные со спецификатором public и static. Public означает, что они могут использоваться любой другой частью программы; static означает, что они могут использоваться без ссылки на конкретный объект. Объект System.out называется потоком стандартного вывода. С ним связана консоль. Объект System.in называется потоком стандартного ввода. С ним связана клавиатура. Объект System.err называется стандартным потоком ошибок, который связан с консолью. Эти потоки могут быть переназначены на любое совместимое устройство ввода-вывода. System.in – это объект типа InputStream; System.out, System.err – объекты типа PrintStream. Все они – байтовые потоки, хотя они обычно используются, чтобы читать и записывать символы с консоли и на консоль. Однако их можно упаковывать в символьные потоки. Предпочтительный способ для чтения консольного ввода в Java2 заключается в использовании символьного потока. Консольной ввод выполняется с помощью считывания из объекта System.in. Чтобы получить символьный поток, который присоединен к консоли, нужно перенести (упаковать) System.in в объект типа BufferedReader (буферизированный входной поток). Обычно используется следующий его конструктор:
BufferedReader (Reader inputReader);
inputReader – поток, который связан с создающимся экземпляром класса BufferedReader; Reader – это абстрактный класс. Один из его конкретных подклассов - InputStreamReader, который преобразовывает байты в символы. Чтобы получить объект InputStreamReader, который связан с System.in, используется следующий конструктор:
InputStreamReader (InputStream inputStream);
Так как System.in ссылается на объект типа InputStream, его можно использовать в качестве параметра inputStream.
Тема 5. РАБОТА С ФАЙЛАМИ
|
||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-09; просмотров: 245; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.007 с.) |