Эквивалент FileSystemWatcher (.NET) в Cocoa

Я разрабатываю приложение в Cocoa. Я хочу постоянно проверять, изменилось ли содержимое файла в определенном месте или нет (например, FileSystemWatcher в .NET). Пожалуйста, дайте мне решение


person MobX    schedule 30.06.2009    source источник
comment
Просто предложение: дайте мне решение, которое может быть истолковано как слегка резкое на английском языке, а также подразумевает, что вы, возможно, не искали ответ для себя. Это хорошая форма для Google, прежде чем задавать вопрос. :-)   -  person Quinn Taylor    schedule 30.06.2009


Ответы (7)


Ознакомьтесь с FSEvents.

person diederikh    schedule 30.06.2009

Как говорит Дидерик, FSEvents — это Carbon API от Apple. для прослушивания событий файловой системы. Кто-то создал оболочку Cocoa/Objective-C для FSEvents, которая называется SCEvents. проще в использовании.

person Bryan Traywick    schedule 30.06.2009
comment
Педантично отметим, что FSEvents не является Carbon API; это часть структуры основных служб. - person briankc; 18.06.2011

Другой вариант — пить прямо из пожарного шланга /dev/fsevents. Я работаю над приложением, которое делает именно это, и оно работает очень хорошо. Вы можете получать уведомления, если файл изменяется, удаляется, перемещается, изменяются атрибуты и т. д. Конечно, это не вариант «Cocoa», так как это в основном код C, но мы используем это в приложении Cocoa.

person Dave DeLong    schedule 30.06.2009

FSEvents великолепны, но они используются для мониторинга папок. Чтобы отслеживать один файл, вам нужно проверить kqueues. Попробуйте "man kqueue" в терминале.

person Jon Hess    schedule 30.06.2009
comment
Тем не менее, SCEvents — лучший вариант для тех, кто ищет решение Cocoa. - person Quinn Taylor; 30.06.2009
comment
Однако FSEvents по-прежнему предназначены для изменений каталога, и похоже, что SCEvents является оболочкой для FSEvents. Вопрос просит контролировать один файл. Kqueues гораздо лучше подходят для этого. Ссылка на SCEvents выше также ссылается на UKKQueue, которая тоже может быть хорошей оболочкой. - person Jon Hess; 08.08.2009

Посмотрите документацию класса NSWorkspace.

person Community    schedule 07.08.2009

Вот пример того, как это сделать с помощью закладок и NSFileManager, чтобы вы могли следить за файлом, если он был перемещен.

https://github.com/ptrsghr/FileWatcher

person rgbrgb    schedule 09.02.2011

Дополнительным ресурсом по kqueues является http://developer.apple.com/documentation/Darwin/Conceptual/FSEvents_ProgGuide/KernelQueues/KernelQueues.html

person Jon Steinmetz    schedule 09.07.2009