2008-08-26 102 views
2

这是场景:处理文件系统更改的最佳体系结构?

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

GUID.dat其中GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (内部的内容是不相关的,但它只是文本数据)

我的应用程序将是具有一个单一的文本框中形式它显示所有正在实时添加和删除的文件。每次有新文件进来时,我都必须用这个文件更新文本框,但是我必须首先确保这个半独一无二的GUID真的是唯一的,如果是,用这个新文件更新文本框。

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

问题是我一直在使用.NET filewatcher,似乎有一个内部缓冲区在每次(buffersize + 1)文件进入时都会被炸毁。我还试图保留内部列表在我的应用程序,只是添加每一个文件进来,但后来做独特的GUID检查,但没有骰子。

回答

3

一对夫妇的事情,我有我的头:

  • 如果GUID是独特,岂不覆盖具有相同名称的文件,或者是基于查询的支票做一些外部行动(例如检查档案)? (即这是YAGNI的时刻吗?)
  • 我以前用过FileSystemWatcher以前都有相当不错的成功,你能否给我们一些想法你的实际做事情?
  • 当您在使用自定义列表时说“无骰子”时,出现了什么问题?你如何在没有FileSystemWatcher的情况下检查文件系统更改?

对不起没有答案呢,只是想了解更多有关该问题的:)

2

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

相关问题