2010-08-02 14 views
8

Mam folder, w którym są ciągle wyrzucane nowe pliki. W Javie, jaki jest najlepszy sposób wykrywania zmian w systemie plików (np. Określony folder, w którym są zrzucane pliki) i dodaj nowo przybyłe pliki do struktury danych kolejki, aby móc sekwencyjnie przetwarzać każdy przychodzący plik.Wykrywanie zmian w systemie plików Java

Jestem świadomy funkcji listFiles() w klasie File, ale używając tego mogę uzyskać tylko pliki, które są dostępne w danym momencie. Oczywiście mogę ciągle odpytywać folder i uzyskiwać listę plików w nim za pomocą wątku. Ale czy jest to najlepszy sposób, czy jest lepszy sposób na osiągnięcie tego.

+0

Bardziej ogólne pytanie, które nie wymaga konkretnych katalogów: http://stackoverflow.com/questions/494869/file-changed-listener-in-java –

Odpowiedz

8

Ciągłe odpytywanie jest sposobem, aby to zrobić w Javie już teraz - choć nie odpytywać zbyt często, może to być bardzo ciężka praca, jeśli katalog zawiera wiele wpisów.

JDK 7 będzie mieć szczególny API robi tylko to java.nio.file.WatchFile

+2

+1 dla WatchFile –

+2

Mogłeś połączyć się z JavaDoc instaed z głupie wyszukiwanie google. – Sylar

+0

Ciągłe sondowanie to zły pomysł. Zalecam użycie JNotify, która włącza powiadomienia systemu plików. – Arnelism

4

Niestety nie ma standardowego sposobu na zrobienie tego, dopóki nie pojawi się JDK7. Ale jest kilka bibliotek dostępnych w Internecie, które wykorzystują natywne funkcje różnych systemów operacyjnych, aby to zrobić.

Biblioteki który patrzę na to jPoller i jNotify Ale w końcu skończyło po prostu przeszukiwania katalogów, które było interesujące dla mnie, gdy miałem to zrobić.

Powiązane problemy