Frage

für ein aktuelles Projekt Ich brauche Änderungen im Dateisystem auf einer zugeordneten Samba-Freigabe von Java auf Windows erkennen: erstellt, aktualisiert und entfernt. Im Moment benutze ich einen Ordner Umfrage, die eine Liste von Dateien und deren modifizierte Zeitstempel für Ereignisse zu betrachten pflegt.

Aber mein Problem ist, dass dieser Ordner Umfrage nur in die Ordner zu bestimmten Zeiten späht (alle 10 Sekunden zum Beispiel), so kann eine aktualisierte Datei ohne zu erkennen, zweimal zwischen zwei Umfragen aktualisiert werden.

Gibt es eine Möglichkeit Ereignisse von Fenstern innerhalb Java, wenn ein Dateiereignis occours auf dieser mappep Samba-Freigabe zu bekommen?

Danke!

War es hilfreich?

Lösung

Java hat nichts in der aktuellen IO api für von dem mit Datei-Benachrichtigungen zu tun O / S.

Java 7 wird einen neuen IO API JSR-203 , die ein Uhr Datei API dass wird entweder Verwendung nativer O / S-Benachrichtigungen oder Abfrage , wenn Benachrichtigungen sind nicht unterstützt Dateiänderungen zu erkennen.

In der Zwischenzeit Sie aussehen könnte, um zu sehen, ob jemand eine Bibliothek implementiert hat, die Sie in die O / S-Benachrichtigungen über JNI Haken erlaubt. Ich denke, dass IntelliJ IDEA eine native lib für diesen Zweck verwendet.

Suchen Sie auf Source Ich habe jfilenotify , aber ich habe es nie benutzt.

Alternativ können Sie erhöhen Sie Ihre Abtastfrequenz (aber das beginnt Ihr Dateisystem Hammer) oder ändern, wie Sie Ihre Dateien werden durch Hinzufügen einer Versionsnummer auf den Dateinamen geschrieben / Ordner, so dass man leicht sagen kann, wenn sich etwas geändert hat.

Andere Tipps

scroll top