使用FileSystemWatcher跟踪Photoshop中的文件更改

时间:2014-11-10 15:18:53

标签: c# filesystems filesystemwatcher

我目前正在处理我的应用程序的一个组件,该组件监视文件的特定目录,并将它们与这些文件的特殊元数据一起保存在数据库中。

我使用FileSystemWatcher来跟踪对这些文件/目录的添加,重命名,删除和更改。到目前为止,这完全正常。但由于FileSystemWatcher无法跟踪移动,因此我使用哈希来跟踪文件。

现在为了保持这种工作,我必须在文件更改后更新数据库中的哈希值。但我的第一次测试是失败的证据。 Photoshop显然有一些狡猾的方法来保存文件。我总是抓住一个" psXXXXX.tmp"正在更改的文件,我使用FileAttributes.Archive进行过滤。问题是:观察者不再为真正改变的文件投掷。由于我需要真实的文件名而不是临时文件名,我无法更新数据库。

即使文件大小改变或写入时间改变 - 也没有任何反应。它完全被忽略了。当临时文件被创建时(或者重命名的原始文件,我不知道),事件会上升一次,然后就不再发生任何事情。

有人可以解释这种行为吗?有人知道如何避免这种情况吗? 任何变通办法或其他解决方案?

由于

1 个答案:

答案 0 :(得分:0)

我有PS的问题,我只需要添加:

watcher.Renamed += new RenamedEventHandler(OnChanged);

一切都很好。