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

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

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

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

Ответы [ 8 ]

16 голосов
/ 01 мая 2009

Зависит от того, какая ОС.

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

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

Чтобы добавить к ответу OS X, начиная с 10.5, вам нужен FSEvents API .

7 голосов
/ 01 мая 2009

В Linux проверьте Inotify .

4 голосов
/ 01 мая 2009
3 голосов
/ 01 мая 2009

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

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

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

2 голосов
/ 01 мая 2009

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

Здесь есть пример здесь (поиск FileSystemWatcher)

1 голос
/ 01 мая 2009

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

1 голос
/ 01 мая 2009

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

1 голос
/ 01 мая 2009

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

Из MSDN:

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

Страница MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...