2009-05-01 8 views
6

Ich möchte wissen, wenn eine neue Datei in einem bestimmten Verzeichnis erstellt wird, anstatt das Verzeichnis von Zeit zu Zeit zu scannen.Kann das Betriebssystem mir sagen, wenn eine neue Datei erstellt wird?

Ich verstehe, dass es eine Möglichkeit gibt, das Betriebssystem mein Programm zu sagen, dass eine neue Datei erstellt wurde. Wie funktioniert es?

Wie bereits erwähnt, dies hat Ähnlichkeiten mit How to be notified of file/directory change in C/C++, ideally using POSIX

Antwort

1

Mit .NET unter Windows (nicht sicher über Linux/Mono) können Sie einen FileSsytemWatcher verwenden können für neue Dateien zu beobachten und Ereignisse auslösen, wenn sie erstellt werden.

Von MSDN:

Verwenden von Filesystemwatcher für Änderungen in einem bestimmten Verzeichnis zu beobachten. Sie können nach Änderungen in Dateien und Unterverzeichnissen des angegebenen Verzeichnisses suchen. Sie können eine Komponente erstellen, um Dateien auf einem lokalen Computer, einem Netzwerklaufwerk oder einem Remotecomputer zu überwachen.

MSDN Page

+0

Wird FileSystemWatcher Ordner rekursiv überwachen? – Geo

1

Mit Mac OS X, diese Funktionalität ist Teil des Spotlight-API.

2

FileSystemWatcher ist die Antwort - und es funktioniert rekursiv.

Es ist ein Beispiel here (Suche nach Filesystemwatcher)

3

FAM bietet eine konsistente Datei bekommen -Watching-Schnittstelle für alle UNIX-Umgebungen. Unter Linux kann der Backend-Daemon durch Gamin ersetzt werden, aber ein mit FAM verbundenes Programm wird mit Gamin funktionieren. (Hinter den Kulissen kann FAM Polling verwenden, und Gamin verwendet inotify oder dnotify oder kqueue, aber Sie sollten sich keine Gedanken über die Implementierung machen.)

OS X.5 hat FSEvents, was sehr unterschiedlich ist indem es das gesamte System anstelle der angegebenen Dateien und Verzeichnisse überwacht, aber auch Ihren Anforderungen entspricht.

Unter Windows siehe Find(First|Next|Close)ChangeNotification or ReadDirectoryChanges.

Verwandte Themen