QFileSystemWatcher 通过监视指定路径的列表来监视文件系统对文件和目录的更改。,其实就是一个监视文件和目录发生改变的监视器,我有时候经常用,因为修改删除文件之类的的,会影响程序的一些文件视图。
调用addPath()来监视特定的文件或目录。可以使用 addPaths() 函数添加多条路径。使用 removePath() 和 removePaths() 函数可以删除已经存在的路径。
QFileSystemWatcher检查添加到其中的每个路径。添加到 QFileSystemWatcher 中的文件可以使用 Files() 函数访问,目录可以使用 directories() 函数访问。
fileChanged()信号会在文件被修改、重命名或从磁盘中删除时发出。类似地,当目录或其内容被修改或删除时,也会发出directoryChanged()信号。
注意,QFileSystemWatcher在重命名文件或从磁盘中删除后停止监视文件,在从磁盘中删除目录后停止监视目录。
这个再次监视需要我们手动把重命名的文件添加进监视的列表之内。
信号也是非常的简单的哈,就两个
信号 | 含义 |
---|---|
directoryChanged(const QString &path) | 这个信号会通过 path 说明是哪个路径被修改了,当指定路径上的目录被修改(例如,当文件被添加或删除)或从磁盘中删除时,会发出此信号。请注意,如果在短时间内发生了几次更改,其中一些更改可能不会发出此信号。然而,变化序列中的最后一个变化总是会产生这个信号。注意:这是一个私有信号。它可用于信号连接,但不能由用户发出。 |
fileChanged(const QString &path) | 当指定路径上的文件被修改、重命名或从磁盘中删除时,将发出此信号。 |
注意 :
注:
在运行不支持inotify的Linux内核的系统上,包含被监视路径的文件系统不能卸载。
监视文件和目录的修改会消耗系统资源。这意味着进程可以同时监控的文件和目录的数量是有限制的。例如,在所有BSD变体上,每个被监控的文件都需要一个打开的文件描述符。一些系统默认限制打开的文件描述符的数量为256。这意味着,如果进程试图向文件系统监视器添加超过256个文件或目录,addPath()和addPaths()将失败。
还要注意,除了被监控文件的文件描述符之外,进程可能还打开了其他文件描述符,这些打开的文件描述符也包括在内。macOS使用不同的后端,因此没有这个问题。
下一篇:C++画一个简单的圣诞树