2009-06-30 7 views
6

Ich entwickle eine Anwendung in Cocoa. Ich möchte ständig überprüfen, ob der Inhalt einer Datei an einem bestimmten Ort geändert wird oder nicht (wie FileSystemWatcher in. NET). Bitte geben Sie mir eine LösungEquivalent von FileSystemWatcher (.NET) in Cocoa

+3

Nur ein Vorschlag: „Gib mir eine Lösung“ könnte so kommen aus leicht abrasiven auf Englisch interpretiert werden, und bedeutet auch, dass Sie nicht auf eine Antwort für sich selbst ausgesehen haben könnte. Es ist eine gute Form für Google, bevor Sie eine Frage stellen. :-) –

Antwort

6

Wie Diederik sagt, ist FSEvents Apples Carbon API für das Abhören von Dateisystemereignissen. Jemand hat einen Cocoa/Objective-C-Wrapper für FSEvents namens SCEvents erstellt, der etwas einfacher zu verwenden ist.

+1

Als eine pedantische beiseite ist FSEvents keine Carbon API; Es ist Teil des Core Services-Frameworks. – briankc

1

FSEvents sind großartig, aber sie werden verwendet, um Ordner zu überwachen. Um eine einzelne Datei zu überwachen, sollten Sie kqueues auschecken. Versuchen Sie "Mann kqueue" im Terminal.

+0

SCEvents ist die bessere Option für jemanden, der nach einer Cocoa-Lösung sucht. –

+0

FSEvents sind jedoch immer noch für Verzeichnisänderungen und es klingt wie SCEvents ist ein Wrapper für FSEvents. Die Frage wird gestellt, um eine einzelne Datei zu überwachen. Kqueues sind dafür viel besser geeignet. Der Link zu SCEvents oben verweist auch auf UKKQueue, was auch ein guter Wrapper sein könnte. –

2

Eine andere Option wäre, direkt aus dem/dev/fsevents Firehose zu trinken. Ich arbeite an einer Anwendung, die genau das tut und es funktioniert sehr gut. Sie können benachrichtigt werden, wenn sich eine Datei ändert, gelöscht wird, verschoben wird, Attribute geändert wurden usw. Zugegeben, dies ist keine "Cocoa" -Option, da es hauptsächlich C-Code ist, aber wir verwenden dies in einer Cocoa-App.

1

Blick auf die NSWorkspace Klasse Dokumentation.