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?
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
Sie können nach Apache Commons JCI FAM (FileAlterationMonitor)
suchenEs 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.
Tags und Links java file filesystems