ich die folgenden Dateien gelöscht und Ordner-Struktur:Java WatchService Dateien nicht melden, wenn das übergeordnete Verzeichnis
/root/
/root/pictures/
/root/pictures/picture1.jpg
/root/pictures/picture2.jpg
ich registrierte zwei WatchServices, einen für die /root/
Ordner und einen für /root/pictures
. Für beide registrierte ich die Ereignisse: ENTRY_CREATE
, ENTRY_DELETE
, ENTRY_MODIFY
.
Wenn ich löschen /root/pictures/
Ich erwarte ein ENTRY_DELETE
Ereignis für das Löschen des Ordners für picture1.jpg
und picture2.jpg
/root/pictures/
und zwei ENTRY_DELETE
Ereignisse zu erhalten. Tatsächlich bekomme ich nur das ENTRY_DELETE
Ereignis für /root/pictures/
. Wenn ich nur picture1.jpg
lösche, erhalte ich wie erwartet ein Lösch-Ereignis.
Ist das normales Verhalten? Wie kann ich mit WatchService die Liste der Dateien abrufen, die sich in einem gelöschten Ordner befanden?
Dank für Ihren Code. Das ist wirklich interessant, denn es funktioniert nicht wie erwartet für mich. Wenn ich den überwachten Ordner lösche, stoppt das Programm und gibt keine Ausgabe aus. Wenn ich nur eine einzelne Datei im überwachten Ordner lösche, erhalte ich die Ausgabe. – bamboofighter
Ich sollte hinzufügen, dass ich den Code unter Mac OS 10.12 ausführen. Könnte es sich um einen Fehler handeln, der nur unter Mac OS auftritt? – bamboofighter
Sie erhalten die Ereignisse für die Einträge im Verzeichnis, nicht jedoch für das Verzeichnis selbst. In Ihrem Code erhalten Sie auch ein Ereignis für das Verzeichnis selbst, da Sie einen anderen WatchService für das übergeordnete Verzeichnis erstellt haben. Deshalb habe ich betont, dass WatchService in meinem Code nicht vorhanden ist. OS sollte in dieser Hinsicht wahrscheinlich keinen Unterschied machen. – hammerfest