最近要做一個日志監(jiān)控類的程序,將日志文件的變化及時輸出到程序界面上,本來是想用定時器去實現(xiàn)的,定時去讀取日志,然后與上一次的內(nèi)容相比,找到變化的部分,再進行輸出,后臺又覺得這樣效率比較低,定時器的觸發(fā)時間間隔也不太好控制,后來找了一下,發(fā)現(xiàn)這個QFileSystemWatcher類,很方便的實現(xiàn)這樣的功能。
QFileSystemWatcher類的簡單說明
QFileSystem這個類,可以同時監(jiān)控多個文件夾和文件,在文件夾刪除,重命名等,以及文件的修改,刪除等變化的情況下,就會發(fā)出信號通知接受者。使用的時候也很簡單,只需要將需要監(jiān)控的文件/文件夾的路徑通過addPath添加給QFileSystemWatcher,不想使用的時候,通過removePath就可以去掉監(jiān)控。當變化的時候,會觸發(fā)信號:directoryChanged 和 fileChanged 非常的簡單方便
addPath(const QString &path)
bool QFileSystemWatcher::removePath(const QString &path)
//相關(guān)的信號
void directoryChanged(const QString &path)
void fileChanged(const QString &path)
通過這個類的監(jiān)控,就不用定時器去不停的讀取文件了,可以說是簡單靈活了。