ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1 «Мониторинг файлов»
Выполнил: Деревянкин Я.В Группы: 932321
Постановка задачи Разработать консольное приложение для мониторинга изменений файлов в файловой системе. Программа должна позволять пользователю: 1.Добавлять файлы для отслеживания (поддерживаются пути с кириллицей) 2.Удалять файлы из отслеживания 3.Просматривать список отслеживаемых файлов 4.Запускать и останавливать мониторинг изменений 5.Отслеживать следующие события: 1.Создание файла 2.Удаление файла 3.Изменение размера файла
Предлагаемое решение Реализовать программу с использованием сигнально-слотного механизма и паттерна Singleton для менеджера файлов. Создать сущность FileManager, которая будет следить за состояниями текущих файлов, создать структуру FileState, в которой будет два поля (exists и size), создать интерфейс Logger, который обеспечит слабую связанность и независимость от реализации вывода. Создать реализацию ConsoleLogger, который будет выводить информацию в консоль.
Сущности и классы
- Logger (Интерфейс логирования) Интерфейс для логирования событий. Определяет набор методов для записи различных событий мониторинга. Методы: logFileAdded() - файл добавлен в отслеживание logFileRemoved() - файл удален из отслеживания logFileCreated() - файл создан на диске logFileDeleted() - файл удален с диска logFileModified() - файл изменен logMonitoringStarted() - мониторинг запущен logMonitoringStopped() - мониторинг остановлен logError() - ошибка logInfo() - информационное сообщение logPrompt() - приглашение к вводу
- ConsoleLogger (реализация Logger для вывода в консоль)
- FileManager (Singleton) Центральный класс управления мониторингом. Содержит коллекцию отслеживаемых файлов и управляет процессом проверки.
Методы: getInstance() - получение экземпляра (Singleton) addFiles() - добавление файлов removeFile() - удаление файла startMonitoring() - запуск мониторинга stopMonitoring() - остановка мониторинга listFiles() - вывод списка файлов checkFiles() - проверка изменений файлов
- FileState (структура) Хранит состояние файла между проверками. Поля: exists - существует ли файл size - размер файла в байтах
UML-диаграмма (https://drive.google.com/file/d/12165x1_xOokjeGLCl5pz6tfMdJ0QRHhu/view?usp=sharing)
Инструкция пользователя Команда Описание add <путь, путь…> C:\test\file2.txt remove < путь> Удалить файл из отслеживания list Получить список отслеживаемых файлов start [интервал] Начать мониторинг с [интервал] stop Остановить мониторинг help Вывести команды exit | quit Выйти из программы
Тестирование Case 1: Добавление файлов Вход: add C:\Users\AdonsKali\Desktop\some_file.txt Результат: Файлы успешно добавлены
Case 2: Добавление файлов с кириллицей в пути Вход: add C:\Users\Test\Desktop\привет.txt, C:\Users\Test\Desktop\мир.txt Результат: Файлы успешно добавлены, пути отображаются корректно
Case 3: Добавление нескольких файлов Вход: add C:\Users\AdonsKali\Desktop\file1.txt, C:\Users\AdonsKali\Desktop\файл1.txt Результат: Файлы успешно добавлены
Case 4: Добавление несуществующего файла Вход: add C:/Users/AdonsKali/Desktop/not_exist.txt list Результат: Файл добавлен в список со статусом "не существует"
Case 5: Добавления существующего файла Вход: add C:\Users\AdonsKali\Desktop\file1.txt add C:\Users\AdonsKali\Desktop\file1.txt Результат: Файл уже отслеживается
Case 6: Удаление файла Вход: add C:\Users\AdonsKali\Desktop\file1.txt remove C:\Users\AdonsKali\Desktop\file1.txt Результат: Файл успешно удален из отслеживания
Case 7: Удаление несуществующего файла Вход: add C:\Users\AdonsKali\Desktop\file1.txt remove C:\Users\AdonsKali\Desktop\file1.txt remove C:\Users\AdonsKali\Desktop\file1.txt Результат: Файл не найден
Case 8: Запуск мониторинга с пустым списком Вход: start Результат: Нет файлов для отслеживания