Лучшая архитектура для обработки изменений файловой системы?

StackOverflow https://stackoverflow.com/questions/28941

Вопрос

Вот сценарий:

Я пишу приложение, которое будет отслеживать любые изменения в определенном каталоге.Этот каталог будет заполнен тысячами файлов в минуту, каждый с «почти» уникальным GUID.Формат файла такой:

GUID.DAT, где GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (внутреннее содержание не имеет отношения, но это просто текстовые данные)

Мое приложение будет формой с одним текстовым полем, в котором будут показаны все файлы, которые добавляются и удаляются в режиме реального времени.Каждый раз, когда приходит новый файл, мне приходится обновлять текстовое поле этим файлом, НО сначала я должен убедиться, что этот полууникальный GUID действительно уникален. Если это так, обновите текстовое поле этим новым файлом.

Когда файл удаляется из этого каталога, убедитесь, что он существует, затем удалите его и соответствующим образом обновите текстовое поле.

Проблема в том, что я использовал средство просмотра файлов .NET, и кажется, что существует внутренний буфер, который взрывается каждый раз, когда поступает (buffersize + 1)-й файл.Я также пытался сохранить внутренний список в своем приложении и просто добавлять каждый поступающий файл, но позже выполнять проверку уникального GUID, но безуспешно.

Это было полезно?

Решение

Пара вещей, которые у меня в голове:

  • Если руководство нет уникальный, не будет ли он перезаписывать файл с тем же именем, или проверка основана на поиске, который выполняет какое-то внешнее действие (например,проверьте архив)?(т.е.это момент Ягни?)
  • Раньше я использовал FileSystemWatcher с довольно хорошим успехом. Можете ли вы дать нам несколько идей относительно того, как это сделать? как ты на самом деле что-то делаешь?
  • Когда вы говорите «нет игр в кости» при работе со своим пользовательским списком, в чем была проблема?А как вы проверяли изменения файловой системы без FileSystemWatcher?!

К сожалению, ответа пока нет, просто хотелось бы узнать больше о проблеме :)

Другие советы

Предлагаю вам взглянуть на SHChangeNotify Вызов API, который может уведомлять вас о всех видах событий оболочки.Чтобы отслеживать активность создания и удаления файлов, вы можете обратить особое внимание на аргументы SHCNE_CREATE и SHCNE_DELETE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top