
- •Лабораторная работа № 3 Обработка файлов
- •Введение
- •Класс InputStream
- •Класс OutputStream
- •Файловый ввод/вывод
- •Буферизованные потоки
- •Класс File
- •Класс RandomAccessFile
- •Пример подсчета количества определенного слова в файле
- •Пример объекта "Книга" с методами чтения и записи в файл
- •Работа с конфигурационными файлами
- •Пример класса preloader для загрузки конфигурационного файла
- •Контрольные вопросы
- •Задание
- •Приложение 1. Работа с датой и временем в Java
- •Приложение 2. Класс StreamTokenizer
Контрольные вопросы
Какой пакет предоставляет средства ввода-вывода в Java?
Что такое поток?
Что такое буферизация?
На базе каких абстрактных классов построена система ввода-вывода Java?
Как реализуется доступ к произвольной позиции в файле?
Для чего служит метод close() и когда его нужно использовать?
Как осуществить перекодировку содержимого файлов?
Как в Java осуществляется работа с конфигурационными файлами?
Задание
В программу демонстрации классов, созданную в лабораторной работе №2:
Включить возможность записи данных модели в файл «базы данных»* на диске и чтения их из файла «базы данных» в программу. Вызов операции чтения и записи добавить пунктами в главное меню.
Создать файл настроек, который должен читаться при старте программы перед выводом главного меню программы и изменять ее поведение. Минимальное количество настроек для программы «4»:
Имя (логин) пользователя (После загрузки программы выводится как приглашение вида: «Добро пожаловать — имя пользователя из файла настроек»)
Признак записи лога: true/false Установка признака в true означает запись необходимых контрольных данных в лог. Минимальное количество настроек для программы «5»:
Имя (логин) пользователя (После загрузки программы выводится как приглашение вида: «Добро пожаловать — имя пользователя из файла настроек»)
Пароль пользователя
Группа пользователя: root (разработчик) или user (оператор) При запуске программа должна спрашивать логин и пароль и в зависимости от прав добавлять в меню пункты «Отладка» и «Автотесты» для пользователя с правами группы root.
Включение режима «Отладка»: true/false Установка признака в true означает запись необходимых контрольных данных в лог. При значении true логи пишутся независимо от группы пользователя при каждом запуске программы.
Включение режима «Автотесты»: true/false Установка признака в true означает выполнение тестов позволяющих проверить результаты работы алгоритмов программы на контрольных данных. Демонстрируется на защите 4-ой ЛР. Установка признака в true означает выполнение автотестов перед запуском основного меню программы и вывод результатов на консоль и в лог, независимо от выбора этого пункта в меню
Необходимые записи лога следующие:
Для группы «4»
запись о старте программы с указанием логина пользователя
записи об операции чтения/записи данных класса в файл «базы данных»
записи об ошибках, возникших при выполнении программы
запись о завершении программы. Для группы «5» дополнительно:
записи результатов автотестов (Демонстрируется на защите ЛР №4)
Целесообразная отладочная информация (Определяется студентовм)
Лог-файл должен дописываться, а не перезаписываться
Записи в лог-файле должны содержать метки времени (см. Приложение 1)
* - Под файлом «базы данных» в данной работе понимается простой текстовый файл, формат записи в который определяется студентом индивидуально. Фраза "база данных" означает, что с файлом, который является базой данных в программе должны быть реализованы следующие основные операции, применяемые к базам данных: 1. Чтение в программу нескольких (а не только одного) экземпляров объектов сохраняемых данных из модели + демонстрация успешности чтения на консоли (метод, например, ObjectsList.get(...)) 2. Добавление к текущему списку объектов из модели в файле, произвольного количества новых объектов, данные для которых вводятся с консоли (метод, например, ObjectsList.put(...)) 3. Изменение данных конкретного объекта (метод, например, ObjectsList.change(...)) 4. Удаление конкретного объекта (метод, например, ObjectsList.del(...))
Рекомендуется присваивать объекту в файле уникальный ID, чтобы проще было выполнять операции удаления, индивидуального чтения и обновления. Выбор операций добавления, удаления, чтения, записи и обновления делается через меню.