我想编写一个简单的应用程序,告诉我文件何时被修改。
该类是否<QFileSystemWatcher>
仅在程序运行时监视更改?
如果是这样,是否有任何其他类可用于文件完整性监控?
我想编写一个简单的应用程序,告诉我文件何时被修改。
该类是否<QFileSystemWatcher>
仅在程序运行时监视更改?
如果是这样,是否有任何其他类可用于文件完整性监控?
您最初可以使用 QProcess 运行 md5sum 等,然后对更改的信号进行比较。
另一种方法是读取或 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;
};
免责声明:这显然没有经过任何测试,但我希望它展示了这个概念。