Может ли операционная система сообщить мне, когда будет создан новый файл?

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

Вопрос

Я хочу знать, когда создается новый файл в определенном каталоге, вместо того, чтобы время от времени сканировать каталог.

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

Как уже отмечалось, это имеет сходство с Как получать уведомления об изменении файла / каталога на C / C ++, в идеале используя POSIX

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

Решение

Зависит от того, какая операционная система.

В Windows базовым API будет Уведомления об изменениях в каталоге.

Поскольку вы упоминаете Linux в тегах, это было бы интерфейс inotify API.

Чтобы добавить к ответу OS X, начиная с версии 10.5, вы хотите FSEvents API-интерфейс.

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

В Linux проверьте Инициализировать.

СЕМЬЯ обеспечивает согласованный интерфейс просмотра файлов во всех UNIX-версиях.В Linux внутренний демон может быть заменен Геймин, но программа, связанная с FAM, будет работать с Gamin просто отлично.(За кулисами FAM может использовать опрос, а Gamin может использовать inotify, dnotify или kqueue, но вам не нужно беспокоиться о реализации.)

OS X.5 имеет События, который сильно отличается тем, что он отслеживает всю систему, а не указанные файлы и каталоги, но также удовлетворит ваши потребности.

В Windows смотрите Найти (Первый| Следующий|Закрыть)ChangeNotification или ReadDirectoryChanges.

FileSystemWatcher - это ответ, и он работает рекурсивно.

Вот такой пример здесь (найдите FileSystemWatcher)

В Mac OS X эта функциональность является частью Spotlight API.

Использование .Net в Windows (не уверен насчет Linux / mono) вы можете использовать FileSsytemWatcher для отслеживания новых файлов и инициирования событий при их создании.

Из MSDN:

Используйте FileSystemWatcher для отслеживания изменений в указанном каталоге.Вы можете следить за изменениями в файлах и подкаталогах указанного каталога.Вы можете создать компонент для просмотра файлов на локальном компьютере, сетевом диске или удаленном компьютере.

Страница MSDN

Windows API предоставляет средства для мониторинга файловой системы - здесь есть пример http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx

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