如何在Delphi XE中监视文件的目录?

时间:2011-04-23 04:53:30

标签: delphi file directory monitoring delphi-xe

  

可能重复:
  Delphi notification when a file gets updated

需要监控创建文件并对其进行计数。 操作系统:WinXP和高。

2 个答案:

答案 0 :(得分:6)

您可能需要查看this article(Delphi的目录监控类)以及Windows API中的此功能:ReadDirectoryChanges

您还应该看一下这个问题,因为它可能符合您的需求:Delphi notification when a file gets updated

答案 1 :(得分:6)

去年我有同样的需求并尝试了Iztok Kacin的目录观察:http://www.cromis.net/blog/downloads/directory-watch/。他回复了电子邮件,对回答我的问题非常有帮助。

他的代码工作正常,但我需要在特定文件夹中的文件关闭时收到通知,由于某些奇怪的原因,来自Microsoft的ReadDirectoryChanges API(它依赖于它)(令人抓狂的)没有提供。我似乎还记得,Iztok的代码使用了线程,并没有足够的重量来满足我的需求。

我最终使用了一种非常简单的方法,对我来说非常有效。在每隔几秒触发的TTimer事件上,我在我正在监视的文件夹上使用FindFirst。找到的所有文件都放在持久的TStringList中。找到的任何文件都不是以前TTimer事件的StringList中的新文件。 (为了检测文件是否关闭,我尝试以独占模式打开文件。如果我无法打开它,那么它就不会被添加到TStringList中,所以它会在下一个事件中被检查。)

我对使用这种方法非常犹豫,认为这太过暴力了。但是,为了满足我的需求,这个解决方案非常好用,幸运的是,它包含了一些易于理解和维护的非常简单的代码。

HTH