33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики
Скачать 1.6 Mb.
|
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТКафедра экономической информатики Кравчук А.С., Кравчук А.И. ПОТОКИ ВВОДА-ВЫВОДАМинск, 2022 Оглавление Введение 3 Потоки байтов 4 Класс InputStream 4 Класс OutputStream 4 Абстрактные классы Reader и Writer 5 Чтение и запись файлов. FileInputStream и FileOutputStream 6 Запись файлов и класс FileOutputStream 6 Чтение файлов и класс FileInputStream 8 Закрытие потоков 11 Класс Scanner 14 Работа с FileWriter и FileReader 17 Буферизованные потоки 19 Класс BufferedOutputStream 19 Класс BufferedInputStream 20 Буферизация символьных потоков. BufferedReader и BufferedWriter 22 Сериализация/десириализация 24 Интерфейс Serializable 24 Сериализация. Класс ObjectOutputStream 24 Десериализация. Класс ObjectInputStream 26 Исключение данных из сериализации 30 Класс File 30 Работа с каталогами 32 Работа с файлами 34 Работа с ZIP-архивами 35 Литература 47 ВведениеОтличительной чертой многих языков программирования является работа с файлами и потоками. В Java основной функционал работы с потоками сосредоточен в классах из пакета java.io. Ключевым понятием здесь является понятие потока. Хотя понятие «поток» в программировании довольно перегружено и может обозначать множество различных концепций. В данном случае применительно к работе с файлами и вводом-выводом будем говорить о потоке (stream), как об абстракции, которая используется для чтения или записи информации (файлов, сокетов, текста консоли и т.д.). Поток связан с реальным физическим устройством с помощью системы ввода-вывода Java. Может быть определен поток, который связан с файлом и через который можно вести чтение или запись файла. Это также может быть поток, связанный с сетевым сокетом, с помощью которого можно получить или отправить данные в сети. Все эти задачи: чтение и запись различных файлов, обмен информацией по сети, ввод-вывод в консоли будем решать в Java с помощью потоков. Объект, из которого можно считать данные, называется потоком ввода, а объект, в который можно записывать данные, - потоком вывода. Например, если надо считать содержание файла, то применяется поток ввода, а если надо записать в файл - то поток вывода. В основе всех классов, управляющих потоками байтов, находятся два абстрактных класса: InputStream (представляющий потоки ввода) и OutputStream (представляющий потоки вывода) Но поскольку работать с байтами не очень удобно, то для работы с потоками символов были добавлены абстрактные классы Reader (для чтения потоков символов) и Writer (для записи потоков символов). Все остальные классы, работающие с потоками, являются наследниками этих абстрактных классов. Замечание. Приработесфайламиобязательнымусловиемявляетсяобработкаисключительныхситуаций.Впримерахпродемонстрированыдвасуществующихподхода:первый–этообработкаисключительнойситуацииспомощьюблокаtry…catch внутриметода,авторой–перебрасываниеисключительной(контролируемой/управляемой)ситуацииизметодаJava-машинеспомощьюсинтаксическойконструкцииthrowsИсключение. |