2009-06-30 10 views
6

Estoy desarrollando una aplicación en Cocoa. Quiero comprobar constantemente si el contenido de un archivo en una ubicación particular se cambia o no (como FileSystemWatcher en .NET). Por favor, que alguien me dé una soluciónEquivalente de FileSystemWatcher (.NET) en Cocoa

+3

Sólo una sugerencia: "dame una solución" podría interpretarse como saliendo ligeramente abrasiva en Inglés, y también implica que usted puede no haber buscado una respuesta por sí mismo. Es una buena forma para Google antes de publicar una pregunta. :-) –

Respuesta

6

Como dice Diederik, FSEvents es la API de Apple para escuchar eventos del sistema de archivos. Alguien ha creado un contenedor Cocoa/Objective-C para FSEvents llamado SCEvents que es un poco más fácil de usar.

+1

Como un pedante lado, FSEvents no es una API de carbono; es parte del marco de servicios básicos. – briankc

1

FSEvents son geniales, pero se utilizan para controlar carpetas. Para monitorear un solo archivo, querrá ver kqueues. Prueba "man kqueue" en la terminal.

+0

SCEvents es la mejor opción para alguien que busca una solución Cocoa. –

+0

FSEvents aún son para cambios de directorio, y parece que SCEvents es un contenedor para FSEvents. La pregunta requiere monitorear un solo archivo. Los Kqueues son mucho más adecuados para eso. El enlace a SCEvents también hace referencia a UKKQueue, que también podría ser un buen contenedor. –

2

Otra opción sería beber directamente de/dev/fsevents firehose. Trabajo en una aplicación que hace exactamente esto y funciona muy bien. Se le puede notificar si un archivo cambia, se elimina, se mueve, se cambian los atributos, etc. De acuerdo, esta no es una opción "Cocoa" ya que es principalmente código C, pero estamos usando esto en una aplicación Cocoa.

1

Mira la documentación de la clase NSWorkspace.