Лучшая архитектура для обработки изменений файловой системы?
-
09-06-2019 - |
Вопрос
Вот сценарий:
Я пишу приложение, которое будет отслеживать любые изменения в определенном каталоге.Этот каталог будет заполнен тысячами файлов в минуту, каждый с «почти» уникальным GUID.Формат файла такой:
GUID.DAT, где GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (внутреннее содержание не имеет отношения, но это просто текстовые данные)
Мое приложение будет формой с одним текстовым полем, в котором будут показаны все файлы, которые добавляются и удаляются в режиме реального времени.Каждый раз, когда приходит новый файл, мне приходится обновлять текстовое поле этим файлом, НО сначала я должен убедиться, что этот полууникальный GUID действительно уникален. Если это так, обновите текстовое поле этим новым файлом.
Когда файл удаляется из этого каталога, убедитесь, что он существует, затем удалите его и соответствующим образом обновите текстовое поле.
Проблема в том, что я использовал средство просмотра файлов .NET, и кажется, что существует внутренний буфер, который взрывается каждый раз, когда поступает (buffersize + 1)-й файл.Я также пытался сохранить внутренний список в своем приложении и просто добавлять каждый поступающий файл, но позже выполнять проверку уникального GUID, но безуспешно.
Решение
Пара вещей, которые у меня в голове:
- Если руководство нет уникальный, не будет ли он перезаписывать файл с тем же именем, или проверка основана на поиске, который выполняет какое-то внешнее действие (например,проверьте архив)?(т.е.это момент Ягни?)
- Раньше я использовал FileSystemWatcher с довольно хорошим успехом. Можете ли вы дать нам несколько идей относительно того, как это сделать? как ты на самом деле что-то делаешь?
- Когда вы говорите «нет игр в кости» при работе со своим пользовательским списком, в чем была проблема?А как вы проверяли изменения файловой системы без FileSystemWatcher?!
К сожалению, ответа пока нет, просто хотелось бы узнать больше о проблеме :)
Другие советы
Предлагаю вам взглянуть на SHChangeNotify Вызов API, который может уведомлять вас о всех видах событий оболочки.Чтобы отслеживать активность создания и удаления файлов, вы можете обратить особое внимание на аргументы SHCNE_CREATE и SHCNE_DELETE.