Qt实现 实时监控文件夹状态
2017-12-12 12:55
525 查看
####Qt实现 实时监控文件夹状态:文件夹内容增删、重命名、删除等
//重建服务器请求监测类 #ifndef QRECONREQUESTLISTENER_H #define QRECONREQUESTLISTENER_H #include <QObject> #include <QFileInfoList> class QFileSystemWatcher; class QReconRequestMonitor : public QObject { Q_OBJECT public: QReconRequestMonitor( const QString& strDirectory ); ~QReconRequestMonitor(); signals: void sigCommitReconRequest( const QString& strFilePath ); protected slots: void slotDirectoryChanged( const QString& strDirectory ); private: QStringList GetFileNames( const QFileInfoList& fileInfoList ); private: QString m_strMonitorDirectory; QStringList m_strListFileNames; QFileSystemWatcher* m_pDirectoryWatcher; }; #endif // QRECONREQUESTLISTENER_H
#include "QReconRequestMonitor.h" #include <QDir> #include <QStringList> #include <QFileSystemWatcher> QReconRequestMonitor::QReconRequestMonitor( const QString& strDirectory ) { m_strListFileNames.clear(); m_strListFileNames = QDir( strDirectory ).entryList(); m_strMonitorDirectory = strDirectory; m_pDirectoryWatcher = new QFileSystemWatcher( this ); m_pDirectoryWatcher->addPath( strDirectory ); connect( m_pDirectoryWatcher, SIGNAL( directoryChanged( const QString& ) ), this, SLOT( slotDirectoryChanged( const QString& ) ) ); } QReconRequestMonitor::~QReconRequestMonitor() { m_strListFileNames.clear(); } void QReconRequestMonitor::slotDirectoryChanged( const QString& ) { QStringList strListFileNames; //To save new file names QFileInfoList fileInfoList = QDir( m_strMonitorDirectory ).entryInfoList(); for( int n = 0; n < fileInfoList.size(); n++ ) { QFileInfo fileInfo = fileInfoList[ n ]; if( fileInfo.fileName().compare( "." ) == 0 || fileInfo.fileName().compare( ".." ) == 0 ) continue; if( fileInfo.isDir() ) continue; QString strFileName = fileInfo.fileName(); if( !m_strListFileNames.contains( strFileName ) ) strListFileNames << strFileName; } if( strListFileNames.isEmpty() ) { m_strListFileNames.clear(); m_strListFileNames = GetFileNames( fileInfoList ); return; } for( int n = 0; n < strListFileNames.size(); n++ ) { //commit recon request QString strFilePath = m_strMonitorDirectory + "/" + strListFileNames[ n ]; emit sigCommitReconRequest( strFilePath ); } m_strListFileNames.clear(); m_strListFileNames = GetFileNames( fileInfoList ); return; } QStringList QReconRequestMonitor::GetFileNames( const QFileInfoList& fileInfoList ) { QStringList strLstNames; int nFileNum = fileInfoList.size(); for( int n = 0; n < nFileNum; n++ ) { QFileInfo fileInfo = fileInfoList[ n ]; strLstNames << fileInfo.fileName(); } return strLstNames; }
相关文章推荐
- 如何实现实时监控数据库主从同步的状态
- 通过nagios实现MD5实时监控iptables状态 推荐
- 用Python实现Hadoop实时作业状态监控
- lvs+keepalived实现实时监控节点健康状态,并根据算法接管资源
- QT图形界面实现系统监控状态(未完成)
- WCF服务通过TCP实时监控客户端状态,并可以向客户端广播推送消息,实现双向通信
- python 实现实时监控snapshot 状态
- 实时查看及监控PHP-FPM的运行状态
- 用拷贝钩子实现对文件夹的监控
- 基于WinSvr2012共享文件夹的Hyper-V实时迁移之三实时迁移的实现及验证 推荐
- 实现LVS的持久连接以及健康状态监控功能
- QT实现Linux下系统监控小工具
- C#实现屏幕实时监控
- 使用apachetop实时监控日志、动态分析服务器运行状态
- Jquery load实现用户在html页面实时显示登录状态
- 使用zabbix3.0.4的ICMP Ping模版实现对客户端网络状态的监控
- 2.supervisor实时监控程序存活状态
- iOS监控网络状态并实时刷新界面数据
- 实现对文件的实时监控--使用Inotify方法
- Qt-QML-ComboBox-自定义,实现状态表示,内容可以动态正价,使用ListModel