用ReadDirectorychanges监控文件夹下doc文件速度不匹配

lengdd_0614 2009-01-21 11:17:14
想实现这样的功能:监控某个文件夹,如果该文件夹中新增了.doc格式的word文件则打印出来。看似简单,但想了两种办法都有速度上的问题:
1.用FindFirstChangeNotification这个函数。在第一次遍历该文件夹内文件时创建哈希表。一旦有变化就把该文件夹文件逐一描一遍,把文件名在哈希表内查找,找不到则说明是新增的,再判断新增文件类型,此处要读取文件的前几个字节,据此来判断是不是word文档,因为光靠后缀名是不可靠的,像rtf格式可以改后缀名。如是.doc则打印出来。但这样查表,判断文件类型很慢,如果同时复制多个文件到该文件夹就处理不过来了,不能全部显示。
2.后来改进用ReadDirectorychangesW函数,监控到有变化后就判断该文件是不是doc,同样是采取读取该文件的前几个字符,看是不是符合特写标志。但还是达不到要求,处理拷贝多个文档时速度还是跟不上,打印不出来。如果不处理则很快。

现在想采取这样的措施,先把新建的文档名字记录到一个vector <string> 里,待批量拷贝完后统一判断是不是doc文档。但怎样算拷贝完,是不是要ReadDirectorychangesW不再监控到文件夹变化时处理?真是不会写了,求高手指点。
我原来的代码是参照黄老邪写的《目录监测的讨论》中的代码,相信大家都看到过。我只是对代码在多线程处理方面稍做改动,因为我要同时监控多个文件夹。
下面是该文的链接 http://www.vckbase.net/document/viewdoc/?id=845
或者哪位有更好的方法,在下谢过啦!
...全文
195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocodaj 2011-04-20
  • 打赏
  • 举报
回复
我也碰到同样问题,求解!

19,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧