Java 7 wprowadziła WatchService
do ciągłego monitorowania systemów plików. Czy istnieje backport dla Java 6?WatchService dla Java 6
Czy istnieją czyste biblioteki Java z podobnymi funkcjami?
Java 7 wprowadziła WatchService
do ciągłego monitorowania systemów plików. Czy istnieje backport dla Java 6?WatchService dla Java 6
Czy istnieją czyste biblioteki Java z podobnymi funkcjami?
tak, oczywiście. Apache VFS robi dokładnie to. możesz go znaleźć pod numerem http://commons.apache.org/vfs/. Jest to czysta biblioteki Java, które można monitorować pliki i to dość łatwy w użyciu:
FileSystemManager manager = VFS.getManager();
FileObject file= manager.resolveFile("c:/MyFile.txt");
DefaultFileMonitor fm = new DefaultFileMonitor(new MyListener());
fm.setDelay(5000);
fm.addFile(file);
fm.start();
powyższy kod będzie monitorować plik c: /MyFile.txt. jeśli się zmieni, zostanie wywołany obiekt new MyListener().
Identyfikator IntelliJ firmy Jetbrains ma komponent "Virtual File System", który uruchamia natywnego obserwatora systemu plików, powiadamiającego o zmianie systemu plików z powrotem na IDEA. Od dwóch lat Jetbrains wydaje wersję open source, która powinna zawierać komponent. Współpracuje z językiem Java 6.
Został wydany na licencji Apache 2.0 zgodnie z wersją FAQ page.
Z tego powodu czysta biblioteka Java nie jest możliwa; potrzebujesz natywnego komponentu, jeśli chcesz uniknąć odpytywania.
http://wiki.netbeans.org/NativeFileNotifications podaje niektóre informacje o dostępnych macierzystych interfejsach API i różnych opakowaniach Java.
DefaultFileMonitor wydaje się być pollerem, a nie odpowiednikiem usługi WatchService, która otrzymywałaby powiadomienia z systemu operacyjnego bez odpytywania. –