Помимо чтения всех файлов и сравнения их с предыдущим снимком, существует ли способ определить, когда каталог изменяется на C# с Windows? Я не против PInvoke, если это то, что нужно.Как определить, когда каталог или файл изменяются без постоянного сканирования
ответ
Используйте класс FileSystemWatcher - он делает то, что вы хотите. Он не скажет вам, какие байты в файле изменились, , но он будет сообщает, какие файлы имеют изменения.
Из дока:
Используйте FileSystemWatcher, чтобы наблюдать за изменений в указанном каталоге. Вы можете следить за изменениями в файлах и в подкаталогах указанного каталога . Вы можете создать компонент для просмотра файлов на локальном компьютере, сетевого диска или удаленного компьютера.
Чтобы следить за изменениями во всех файлах, установите Свойство Filter в пустую строку («») или использовать групповые символы («.»). В просмотрите определенный файл, установите для свойства Filter имя файла. Например, для просмотра в файле файла MyDoc.txt установите для свойства Filter значение «MyDoc.txt». Вы также можете следить за изменениями в файле . Например, чтобы посмотреть изменения в текстовых файлах , установите для параметра «Фильтр » значение «* .txt».
Существует несколько видов изменений, которые вы можете получить в в каталоге или файле. Например, вы можете следить за изменениями в атрибутах, дате LastWrite и времени или в размере файлов или каталогов. Это делается путем установки свойства NotifyFilter в значение значений NotifyFilters. Для более информация о типе изменений, которую вы можете получить , см. NotifyFilters.
Вы можете посмотреть переименование, удаление, или создать файлы или каталоги. Например, чтобы просмотреть переименование текстовых файлов , установите для параметра «Фильтр» значение «* .txt» и вызовите метод WaitForChanged с переименованным параметром для его параметром.
Я должен был сделать это для программы, которая будет наблюдать за каталогом и посмотреть, были ли добавлены новые файлы изображений, и автоматически изменит их размер. Когда кто-то будет добавлять несколько файлов за один раз, наблюдатель не поймает все файлы, так как он был однопоточным, и был занят изменением размера одного изображения, в то время как другой был удален.
Мне пришлось сделать это многопоточным приложением, где основной поток просто смотрел каталог и добавлял файлы в очередь, а другой поток читал из очереди и изменял размер этих изображений.
Это то, что вы, возможно, захотите быть осторожным, если вы собираетесь делать что-либо с файлами.
Да, я обязательно создам поток потока потока для каждой файловой операции, которую я буду делать, спасибо за подсказку! – jjxtra
- 1. Каталог постоянного кеша iOS
- 2. Как определить файл или файл?
- 3. Как определить каталог или файл в linux в c
- 4. Рекурсивного каталог резюме сканирования
- 5. Mac OS: как определить путь - это файл или каталог
- 6. Как определить путь - это файл или каталог в vb6?
- 7. Как определить строку представляет каталог или файл в Node.js?
- 8. Как определить, можно ли переименовать файл или каталог в OSX?
- 9. Как определить или установить рабочий каталог QtSpim?
- 10. Как проверить, существует ли файл или каталог без использования fs.exists?
- 11. Переменные изменяются без причины
- 12. Как определить каталог расширения
- 13. Тестирование вектора без сканирования
- 14. Почему я не могу определить сравнить без постоянного
- 15. Файл сканирования вирусов с Powershell
- 16. Файл или каталог _findfirst C++
- 17. .NET filesystemwatcher - это был файл или каталог?
- 18. Различать файл или каталог в paramiko
- 19. Как определить каталог в init.pp?
- 20. tar typeflag каталог или файл, когда tar'ing каталоги в golang
- 21. Как узнать, существует ли файл или каталог?
- 22. Как переписать Если существует файл или каталог?
- 23. Deviceinfo без сканирования
- 24. Как сохранить сервис без постоянного уведомления
- 25. C# .NET - как определить, является ли каталог доступным для записи, с или без UAC?
- 26. Javascript. Как определить, когда изменился файл window.document?
- 27. FileSystemWatcher - как определить, когда файл закрыт?
- 28. Неверный синтаксис - Glob каталог изображений сканирования каруселью
- 29. Как определить, когда определенный файл был открыт?
- 30. Как определить записи на основе последнего сканирования
будет ОБЯЗАТЕЛЬНО рассказать вам, какие файлы имеют изменения. Я протестировал это. При большой нагрузке его не 100%. –
также есть много «gotchas», которые нужно учитывать при реализации. Обязательно прочитайте всю документацию. Возможно, вам придется повторно инициализировать наблюдателя время от времени при возникновении ошибки. –
Блестящий, спасибо! – jjxtra