Qt文件监控QFileSystemWatcher

原文链接:https://blog.csdn.net/liang19890820/article/details/51849252

简述
QFileSystemWatcher类用于提供监视文件和目录修改的接口。

QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。

调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以使用addPaths()。通过使用removePath()和removePaths()函数来移除现有路径。

QFileSystemWatcher检查添加到它的每个路径,已添加到QFileSystemWatcher的文件可以使用的files()函数进行访问,目录则使用directories()函数进行访问。

当一个文件被修改、重命名或从磁盘上删除时,会发出fileChanged()信号。同样,当一个目录或它的内容被修改或​​删除时,会发射directoryChanged()信号。需要注意:文件一旦被重命名或从硬盘删除,目录一旦从磁盘上删除,QFileSystemWatcher将停止监控。

注:监控文件和目录进行修改的行为会消耗系统资源。这意味着,你的进程同时监控会有文件数量的限制。一些系统限制打开的文件描述符的数量默认为256。也就是说,如果你的进程试使用addPath()和addPaths()函数添加超过256个文件或目录到文件系统将会失败。

| 版权声明:一去、二三里,未经博主允许不得转载。

公共函数
bool addPath(const QString & path)
如果路径存在,则添加至文件系统监控,如果路径不存在或者已经被监控了,那么不添加。

如果路径是一个目录,内容被修改或​​删除时,会发射directoryChanged()信号;否则,当文件被修改、重命名或从磁盘上删除时,会发出fileChanged()信号。

如果监控成功,返回true;否则,返回false.

监控失败的原因通常依赖于系统,但也包括资源不存在、接入失败、或总的监控数量限制等原因。

QStringList addPaths(const QStringList & paths)
添加每一个路径至添加至文件系统监控,如果路径不存在或者已经被监控了,那么不添加。

返回值是不能被监控的路径列表。

QStringList directories() const
返回一个被监控的目录路径列表。

QStringList files() const
返回一个被监控的文件路径列表。

bool removePath(const QString & path)
从文件系统监控中删除指定的路径。如果监控被成功移除,返回true。

删除失败的原因通常是与系统相关,但可能是由于路径已经被删除。

QStringList removePaths(const QStringList & paths)
从文件系统监控中删除指定的路径。返回值是一个无法删除成功的路径列表。

信号
void directoryChanged(const QString & path)
当目录被修改(例如:在指定的路径中添加或删除一个文件)或从磁盘删除时,这个信号被发射。注意:如果有在短时间内有几种变化,可能有些变化不会发出这个信号。然而,变化的序列中的最后的变化总会发射这个信号。
注意:这是一个私有信号,可以用于信号连接但不能由用户发出。

void fileChanged(const QString & path)
当在指定路径中的文件被修改、重命名或从磁盘上删除时,这个信号被发射。
注意:这是一个私有信号,可以用于信号连接但不能由用户发出。
———————————————

猜你喜欢

转载自blog.csdn.net/qq_36533978/article/details/103194657