Skip to content

lekksha/FileTracker

Repository files navigation

FileTracker

Постановка задачи:

Написать программу для слежения за состоянием выбранного файла.

Ограничимся двумя характеристиками:

Существует файл или нет; Каков размер файла. Программа будет выводить на консоль уведомление о произошедших изменениях в файле. Существует несколько ситуаций для наблюдаемого файла

Файл существует , файл не пустой - на экран выводится факт существования файла и его размер. Файл существует, файл был изменен - на экран выводится факт существования файла, сообщение о том что файл был изменен и его размер. Файл не существует - на экран выводится информация о том что файл не существует. В главной программе создаем объект для отслеживания состояния конкретного файла/файлов, Можно использовать бесконечный цикл, в котором будем обновлять состояние объекта/объектов каждые 100 миллисекунд. Например так: std::this_thread::sleep_for( std::chrono::milliseconds( 100 ) );

Предложенное решение

Итоговая работа будет состоять из трёх классов:

  • FileState - наследуется от QFileState.

    QFileState необходим для получения информации об изменении размера файла. Изменение размера при данной задаче соответствует изменению самого файла. Однако существует необрабатываемый случай, при котором файл изменяется, но размер остается тем же. В будущем планируется исправить этот недочет. Способы решения:

    1. Если у QFile есть возможность измерять размер файла, то QFileState можно убрать.
    2. Можно использовать формулу (Количество символов * на размер символа). Однако мы ограничимся только простыми файлами и это увеличит длительность разработки.
  • FileTracker - Наследуется от QList.

    Можно было бы использовать QLinkedList, но здесь есть избыточный итеративный подход к перемещению по элементам списка. Можно было бы использовать QVecor, но у нас нет нужды в том чтобы элементы находились рядом. Является агрегатором FileState. Должен запускать обновления по каждому файлу

  • Output - Наследуется от QObject.

    Получает сигналы об изменении файлов и выводит на экран их состояние.

Для постоянного обновления используем QTimer

UML-диаграмма.

alt text

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published