Java erkennt Änderungen im Dateisystem

8

Ich habe einen Ordner, in dem ständig neue Dateien abgelegt werden. In Java, was ist der beste Weg, um Änderungen im Dateisystem (d. h. einen bestimmten Ordner, in dem die Dateien abgelegt werden) zu erkennen und neu hinzukommen Dateien zu einer Warteschlangendatenstruktur, so dass ich jede eingehende Datei sequentiell verarbeiten kann.

Ich kenne die Funktion listFiles () in der File-Klasse, aber mit dieser Funktion kann ich nur Dateien erhalten, die zu einem bestimmten Zeitpunkt verfügbar sind. Natürlich kann ich den Ordner kontinuierlich abfragen und die Liste der darin enthaltenen Dateien mit einem Thread abrufen. Aber ist dies der beste Weg, oder gibt es einen besseren Weg, dies zu erreichen?

    
Emil 02.08.2010, 12:18
quelle

4 Antworten

8

Kontinuierliches Polling ist ab sofort in Java möglich - obwohl nicht zu oft abgefragt wird, kann es eine ziemlich schwere Operation sein, wenn das Verzeichnis viele Einträge enthält.

JDK 7 wird eine spezielle API haben, um genau das zu tun java.nio. file.WatchFile

    
nos 02.08.2010, 12:22
quelle
6

Sie können nach Apache Commons JCI FAM (FileAlterationMonitor)

suchen     
DixonD 02.08.2010 12:22
quelle
4

Es gibt leider keine Standardmethode, dies zu tun, bis JDK7 herauskommt. Aber es gibt einige Bibliotheken im Internet, die dazu die nativen Funktionen verschiedener Betriebssysteme verwenden.

Die Bibliotheken, die ich angeschaut habe, sind jPoller und jNotify Aber am Ende habe ich einfach das Verzeichnis abgefragt, das für mich interessant war, als ich das tun musste.

    
Jaka 02.08.2010 12:22
quelle
1

Es gibt ein vollständiges Beispiel hier: Ссылка (Erklärung)

Ссылка (Quelle)

Dies funktioniert mit JRE 7, ich habe es unter NetBeans 7.0 getestet.

    
Mr Ed 10.01.2012 16:16
quelle

Tags und Links