处理文件系统更改的最佳体系结构?

时间:2020-03-05 18:43:31  来源:igfitidea点击:

这是场景:

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

GUID.dat其中GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(内部内容无关紧要,而只是文本数据)

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

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

问题是我一直在使用.NET filewatcher,并且似乎每次第(buffersize + 1)个文件进入时,内部缓冲区都会被炸毁。我还尝试在我的内部保留一个内部List应用程序,只需添加进来的每个文件,但稍后再进行unique-GUID检查,但不要骰子。

解决方案

回答

我脑子里有几件事:

  • 如果guid不是唯一的,它将不会覆盖具有相同名称的文件,还是检查是基于查找而进行的某些外部操作(例如检查归档文件)? (即,这是YAGNI时刻吗?)
  • 之前我曾经使用FileSystemWatcher取得了不错的成绩,我们能给我们一些有关我们实际工作方式的想法吗?
  • 当我们在使用自定义列表时说"没有骰子"时,问题出在哪里?以及如何在没有FileSystemWatcher的情况下检查文件系统的更改?

抱歉,目前还没有答案,只是想了解更多有关该问题的信息:)

回答

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