Das Betriebssystem kann mir sagen, wenn eine neue Datei erstellt wird?
-
03-07-2019 - |
Frage
Ich möchte wissen, wenn eine neue Datei auf einem bestimmten Verzeichnis erstellt wird, anstatt das Verzeichnis von Zeit zu Zeit des Abtastens.
Ich verstehe, dass es eine Möglichkeit ist das Betriebssystem sagen, meinem Programm, das eine neue Datei erstellt wurde zu machen. Wie funktioniert es?
Wie bereits erwähnt, hat diese Ähnlichkeiten mit Wie benachrichtigt Datei werden / Verzeichnisänderung in C / C ++, idealerweise unter Verwendung von POSIX
Lösung
ist abhängig vom Betriebssystem.
Unter Windows würde die Basis API Verzeichnis ändern Benachrichtigungen .
Da Sie Linux in den Tags erwähnen, wäre dies der inotify API sein.
auf die OS X Antwort hinzuzufügen, wie von 10.5, möchten Sie die FSEvents API .
Andere Tipps
Unter Linux Besuche Inotify .
Wie sein benachrichtigte die Datei / Verzeichnisänderung in C / C ++, idealerweise mit POSIX
oder nach inotify in Stackoverflow Sie viele Ideen bekommen
FAM bietet eine konsistente Datei-Watching-Schnittstelle über alle UNIX-Varianten. Unter Linux kann das Back-End-Daemon von Gamin ersetzt werden, sondern ein Programm verknüpft mit FAM wird mit Gamin gut funktionieren. (Hinter den Kulissen FAM kann unter Verwendung von Polling sein und Gamin können unter Verwendung von inotify oder dnotify oder kqueue, aber Sie sollten nicht über die Umsetzung zu kümmern.)
OS X.5 hat FSEvents , das ist sehr unterschiedlich, dass sie überwacht das gesamte System statt angegebenen Dateien und Verzeichnisse, sondern auch Ihre Bedürfnisse befriedigen.
Unter Windows finden Sie unter finden (Erste | Weiter | Close) ChangeNotification oder ReadDirectoryChanges .
Filesystemwatcher ist die Antwort - und es funktioniert rekursiv
.Es ist ein Beispiel hier (Suche nach Filesystemwatcher)
Mit Mac OS X, diese Funktionalität Teil des Spotlight-API ist.
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 zu sehen für Änderungen in einem bestimmten Verzeichnis. Sie für Änderungen in Dateien anschauen kann und Unterverzeichnisse des angegebenen Verzeichnis. Sie können eine Komponente erstellen zu sehen Dateien auf einem lokalen Computer, einen Netzlaufwerk oder ein Remote-Computer.
Die Windows-API bietet die Möglichkeit zur Überwachung des Dateisystems - es gibt hier ein Beispiel http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx