Verwenden von JDK 7 Ich habe erfolgreich mit java.nio.file.StandardWatchEventKinds. *
bestimmte Verzeichnisse für neue Dateierstellungen, Löschungen und Änderungen beobachtetIch hoffe, dass jemand einen Weg findet, Java dazu zu bringen, neue Dateierstellungen unabhängig von ihrem Pfad zu erkennen.
Ich möchte dies tun, damit ich für jede neu geschriebene Datei eine MD5-Summe berechnen kann.
Vielen Dank für Ihren Rat.
Ok, kurze Antwort ist, ich glaube nicht, dass Java das aus der Box tun kann. Sie müssten entweder Aufrufe an das Betriebssystem abfangen, die etwas näher an dem Bare-Metal-System erfordern, oder Sie könnten tun, was in einem anderen vorgeschlagen wird antworte und registriere Listener für jeden Ordner vom root down, ganz zu schweigen von anderen Laufwerken im Fall von Windows Maschinen.
Der erste Ansatz würde ein benutzerdefiniertes JNI benötigen, bei dem davon ausgegangen wird, dass das Betriebssystem über einen solchen Hook verfügt und Benutzercodezugriff ermöglicht.
Der zweite Ansatz würde funktionieren, könnte aber viel Speicher belegen, um alle Listener zu verfolgen. In Windows mit der rechten Maustaste auf c: \ und wählen Sie und sehen Sie, wie viele Ordner wir gerade sprechen.
Eine Möglichkeit - keine praktische, aber eine Möglichkeit - besteht darin, den Verzeichnisbaum für die Verzeichnisse zu durchlaufen, die Sie ansehen möchten, und diese jeweils in einem WatchService zu registrieren. Das ist kein sehr schöner Weg, und es könnte ein Problem sein, abhängig davon, wie groß der eigentliche Verzeichnisbaum ist.
Ich kenne StandardWatchEvents nicht (obwohl es sich praktisch anhört).
Sie können eine native Fenster-API verwenden, z. B. ReadDirectoryChangesW (oder Volume-Änderungen). Es ist schmerzhaft, aber funktioniert (war da, habe das getan, ich wünschte, ich hätte zu der Zeit eine andere Option).