Мониторинг целостности файлов

Я хотел бы написать простое приложение, которое сообщает мне, когда файл был изменен.

Ли <QFileSystemWatcher> класс только следит за изменениями при запуске программы?

Если да, есть ли другие классы, которые я могу использовать для контроля целостности файлов?

1

Решение

Вы можете запустить md5sum и т. Д. Сначала с QProcess, а затем для измененных сигналов и сравнить.

Альтернативой является чтение всего файла в или mmap и создание вашего хэша с помощью QCryptoGraphicHash.

В любом случае, вы должны сделать это сначала, а затем в обработчиках сигналов, например, в слотах, как только будет правильно установлено соединение в вашем подклассе QObject.

#include <QObject>
#include <QFileSystemWatcher>

class MyClass : public QObject
{
Q_OBJECT
public:
explicit MyClass(QObject *parent = Q_NULLPTR)
: QObject(parent)
{
// ...
connect(m_fileSystemWatcher, SIGNAL(fileChanged(const QString&)), SLOT(checkIntegrity(const QString&)));
// ...
}

public slots:
void checkIntegrity(const QString &path)
{
// 1a. Use QProcess with an application like md5sum/sha1sum
// OR
// 1b. Use QFile with readAll() QCryptoGraphicsHash
// 2. Compare with the previous
// 3. Set the current to the new
}

private:
QFileSystemWatcher m_fileSystemWatcher;
};

Отказ от ответственности: Это, очевидно, никоим образом не проверено, но я надеюсь, что это демонстрирует концепцию.

1

Другие решения


По вопросам рекламы [email protected]