2009-06-30 26 views
6

Zajmuję się tworzeniem aplikacji w kakao. Chcę stale sprawdzać, czy zawartość pliku w konkretnej lokalizacji została zmieniona, czy nie (np. FileSystemWatcher w .NET). Proszę, daj mi rozwiązanie:Równoważnik FileSystemWatcher (.NET) w kakao

+3

tylko sugestia: „daj mi rozwiązanie” może być interpretowane jako spadając nieznacznie ścierny w języku angielskim, a także sugeruje, że być może nie wyglądała na odpowiedź dla siebie. Przed opublikowaniem pytania Google ma dobrą formę. :-) –

Odpowiedz

6

Jak mówi Diederik, FSEvents to Apple Carbon API do słuchania zdarzeń systemu plików. Ktoś stworzył opakowanie Cocoa/Objective-C dla FSEvents o nazwie SCEvents, które jest nieco łatwiejsze w użyciu.

+1

Jako narzędzie pedagogiczne, FSEvents nie jest Carbon API; jest częścią struktury Core Services. – briankc

1

FSEventy są świetne, ale służą do monitorowania folderów. Aby monitorować pojedynczy plik, musisz sprawdzić kqueues. Spróbuj "man kqueue" w terminalu.

+0

SCEvents to lepsza opcja dla kogoś, kto szuka rozwiązania kakaowego. –

+0

Zdarzenia FSEvent są jednak nadal zmianami katalogów i wygląda na to, że SCEvents jest opakowaniem dla zdarzeń FSEvent. Pytanie wymaga monitorowania pojedynczego pliku. Kingo są o wiele lepiej do tego przystosowane. Link do SCEvents powyżej odnosi się również do UKKQueue, które może być również dobrym opakowaniem. –

2

Inną opcją byłoby picie bezpośrednio z firehose/dev/fsevents. Pracuję nad aplikacją, która robi dokładnie to i działa bardzo dobrze. Możesz otrzymać powiadomienie, gdy plik się zmieni, zostanie usunięty, przeniesiony, ma zmienione atrybuty, itp. Oczywiście nie jest to opcja "kakao", ponieważ jest to głównie kod C, ale używamy go w aplikacji Cocoa.

1

Spójrz na dokumentacji klasy NSWorkspace.