监控目录中文件的变化---FindFirstChangeNotification
2018-02-05 09:41
471 查看
FindFirstChangeNotification()函数只能监控到目录或是目录中的文件发生了哪种变化,但是更详细的变化信息是不能得到的。要得到更详细的信息,可以使用ReadDirectoryChangesW()函数,下次讲解这个函数的使用方法。
使用举例:
使用举例:
#include "stdafx.h" void WatchDirectory(LPTSTR lpDir) { DWORD dwWaitStatus,dwRet(0); HANDLE dwChangeHandles[3]; TCHAR lpDrive[4] = {0},lpFile[_MAX_FNAME] = {0},lpExt[_MAX_EXT] = {0}; _tsplitpath(lpDir, lpDrive,NULL, lpFile, lpExt); lpDrive[2] = (TCHAR)'\\'; lpDrive[3] = (TCHAR)'\0'; //分别监控文件名,路径名,文件内容的修改 dwChangeHandles[0] = FindFirstChangeNotification( lpDir, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME); //文件名 if (dwChangeHandles[0] == INVALID_HANDLE_VALUE){ ExitProcess(GetLastError()); } dwChangeHandles[1] = FindFirstChangeNotification( lpDrive, TRUE, FILE_NOTIFY_CHANGE_DIR_NAME); //路径名 if (dwChangeHandles[1] == INVALID_HANDLE_VALUE){ ExitProcess(GetLastError()); } dwChangeHandles[2] = FindFirstChangeNotification( lpDir, TRUE, FILE_NOTIFY_CHANGE_LAST_WRITE); //文件内容/或者说最后保存时间 if (dwChangeHandles[2] == INVALID_HANDLE_VALUE){ ExitProcess(GetLastError()); } //改变通知已经设置完成,现在只需等待这些通知被触发,然后做相应处理 while (TRUE) { dwWaitStatus= WaitForMultipleObjects(3, dwChangeHandles, FALSE, INFINITE); switch(dwWaitStatus) { case WAIT_OBJECT_0: printf("文件名发生了改变!\n"); if(FindNextChangeNotification(dwChangeHandles[0]) == FALSE ){ ExitProcess(GetLastError()); } break; case WAIT_OBJECT_0 + 1: printf("目录名发生了改变!\n"); if(FindNextChangeNotification(dwChangeHandles[1]) == FALSE){ ExitProcess(GetLastError()); } break; case WAIT_OBJECT_0 + 2: printf("最后保存时间发生了改变!\n"); if(FindNextChangeNotification(dwChangeHandles[2]) == FALSE){ ExitProcess(GetLastError()); } break; default: ExitProcess(GetLastError()); break; } } _endthread(); } void MonitorThread(void* arg) { WatchDirectory("D:\\Data"); } int _tmain(int argc, _TCHAR* argv[]) { _beginthread(MonitorThread,10240,NULL); while (TRUE) { Sleep(1000); } return 0; }
相关文章推荐
- VC++ 文件监控(二) FindFirstChangeNotification
- (转)FindFirstChangeNotification,创建一个文件通知对象,该对象用于监视文件系统发生的变化
- FindFirstChangeNotification FindNextChangeNotification实现应用层文件监控的代码分析
- FindFirstChangeNotification,创建一个文件通知对象,该对象用于监视文件系统发生的变化
- 监控目录文件变化的ReadDirectoryChangesW 函数学习总结
- windows系统下使用FindFirstFile 和 FindNextFileA遍历某目录下的所有文件(c++编写)
- Java 如何监控文件目录的变化 【转】
- Java监控文件目录的变化
- FindFirstChangeNotification
- c#调用api(FindFirstFile,FindNextFile)高效遍历目录文件【转载】
- findfirst findnext 递归查找指定目录下所有子目录下所有文件,为什么总是死机?
- linux 系统监控某目录下文件及文件夹的变化
- 【web安全】监控文件目录变化 , 防篡改系统的简易实现
- 一个监控LINUX目录和文件变化的Shell脚本分享
- Python for Windows——监控Windows某个目录下文件的变化
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
- 查找指定目录的第一个文件或目录并返回它的句柄——FindFirstFile
- Windows监控文件变化(ReadDirectoryChangesW)
- 利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件
- 使用FindFirstFile和FindNextFile对给定目录下所有文件进行广度优先遍历