我正在使用FindFirstChangeNotification API来监控特定文件夹中发生的更改。但是如何排除特定文件(存在于观看文件夹中)仅更改通知。
答案 0 :(得分:1)
它在目录级别工作,如果要排除特定文件,则只需忽略应用程序逻辑中有关它的任何通知。
答案 1 :(得分:1)
使用ReadDirectoryChanges()
,它监视目录树中的文件。 ReadDirectoryChanges
基本上与FindFirstChangeNotification
,FindNextChangeNotification
做同样的事情。 ReadDirectoryChanges
功能更强大,因为如果向ReadDirectoryChangesW()
提供可选的回调函数,您可以看到哪个文件发生了变化,变更了原因,然后在应用程序逻辑中进行过滤,而不会产生任何系统调用的开销( s)找到哪个文件发生了变化,......你得到了这个结构数组。
typedef struct _FILE_NOTIFY_INFORMATION {
DWORD NextEntryOffset;
DWORD Action; // <- reason for the change
DWORD FileNameLength;
WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
FindNextChangeNotification
更像是一个大锤,您仍然需要检查文件夹以查看确切的更改,但如果您已经知道要搜索哪个文件,则更容易使用。在线程等待/ IO完成逻辑方面,Findfirst
/ Next
也稍微容易使用。