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

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

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

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


person Liran Orevi    schedule 01.05.2009    source источник


Ответы (8)



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

person Haakon    schedule 01.05.2009

Как получить уведомление о файле /directory изменение в C/C++, в идеале с использованием POSIX

или найдите inotify в stackoverflow, вы получите много идей

person DanM    schedule 01.05.2009

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

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

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

person ephemient    schedule 01.05.2009

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

Пример здесь (ищите FileSystemWatcher)

person Joe Albahari    schedule 01.05.2009

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

person Thomas L Holaday    schedule 01.05.2009

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

Из MSDN:

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

Страница MSDN

person cjk    schedule 01.05.2009
comment
Будет ли FileSystemWatcher просматривать папки рекурсивно? - person Geo; 01.05.2009

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

person Community    schedule 01.05.2009