2

这是场景:

我正在编写一个应用程序来监视特定目录中的任何更改。该目录每分钟将被数千个文件淹没,每个文件都有一个“几乎”唯一的 GUID。文件格式是这样的:

GUID.dat where GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(内部内容不相关,只是文本数据)

我的应用程序将是一个具有单个文本框的表单,该文本框显示所有实时添加和删除的文件。每次有新文件进入时,我都必须用这个文件更新文本框,但我必须首先确保这个半唯一的 GUID 真的是唯一的,如果是的话,用这个新文件更新文本框。

从该目录中删除文件时,请确保它存在,然后将其删除,并相应地更新文本框。

问题是我一直在使用 .NET 文件观察器,似乎每次进入 (buffersize + 1)-th 文件时都有一个内部缓冲区被炸毁。我还尝试在我的应用程序,只需添加每个传入的文件,但稍后执行唯一 GUID 检查,但不要骰子。

4

2 回答 2

3

我脑子里有几件事:

  • 如果 guid不是唯一的,它是否不会覆盖具有相同名称的文件,或者检查是否基于执行某些外部操作的查找(例如检查存档)?(即这是一个 YAGNI 时刻吗?)
  • 我以前使用过 FileSystemWatcher 并取得了相当大的成功,你能给我们一些关于你实际做事的想法吗?
  • 当您在使用自定义列表时说“没有骰子”时,问题是什么?在没有 FileSystemWatcher 的情况下,您是如何检查文件系统更改的?!

抱歉暂时没有答案,只是想了解更多关于这个问题的信息:)

于 2008-08-26T19:48:48.107 回答
2

我建议你看看SHChangeNotify API 调用,它可以通知你各种 shell 事件。要监视文件创建和删除活动,您可能需要特别注意 SHCNE_CREATE 和 SHCNE_DELETE 参数。

于 2008-08-26T19:52:57.833 回答