用ReadDirectorychanges监控文件夹下doc文件速度不匹配
想实现这样的功能:监控某个文件夹,如果该文件夹中新增了.doc格式的word文件则打印出来。看似简单,但想了两种办法都有速度上的问题:
1.用FindFirstChangeNotification这个函数。在第一次遍历该文件夹内文件时创建哈希表。一旦有变化就把该文件夹文件逐一描一遍,把文件名在哈希表内查找,找不到则说明是新增的,再判断新增文件类型,此处要读取文件的前几个字节,据此来判断是不是word文档,因为光靠后缀名是不可靠的,像rtf格式可以改后缀名。如是.doc则打印出来。但这样查表,判断文件类型很慢,如果同时复制多个文件到该文件夹就处理不过来了,不能全部显示。
2.后来改进用ReadDirectorychangesW函数,监控到有变化后就判断该文件是不是doc,同样是采取读取该文件的前几个字符,看是不是符合特写标志。但还是达不到要求,处理拷贝多个文档时速度还是跟不上,打印不出来。如果不处理则很快。
现在想采取这样的措施,先把新建的文档名字记录到一个vector <string> 里,待批量拷贝完后统一判断是不是doc文档。但怎样算拷贝完,是不是要ReadDirectorychangesW不再监控到文件夹变化时处理?真是不会写了,求高手指点。
我原来的代码是参照黄老邪写的《目录监测的讨论》中的代码,相信大家都看到过。我只是对代码在多线程处理方面稍做改动,因为我要同时监控多个文件夹。
下面是该文的链接 http://www.vckbase.net/document/viewdoc/?id=845
或者哪位有更好的方法,在下谢过啦!