2011-11-01 19 views
16

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?

Odpowiedz

15

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().

+16

DefaultFileMonitor wydaje się być pollerem, a nie odpowiednikiem usługi WatchService, która otrzymywałaby powiadomienia z systemu operacyjnego bez odpytywania. –

4

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.

5

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.

Powiązane problemy