Używam Apache Commons VFS2 (Virtual File System) do monitorowania pliku zmian w katalogu. org.apache.commons.vfs2.FileListener
return org.apache.commons.vfs2.FileObject
. Jak przekonwertować org.apache.commons.vfs2.FileObject
w java.io.File
Konwersja pliku FileObject do pliku
Odpowiedz
Można użyć
new File(fileobject.getName().getPath());
pamiętać, że obiekt pliku VFS niekoniecznie odwołuje się do prawdziwego, a może też odwoływać się do pliku w pliku zip na przykład. Zależy od resolvera, którego użyto do uzyskania obiektu pliku.
Dodatkowe informacje:
Nie sądzę, że to zadziała, jeśli FileObject reprezentuje plik w pliku zip. –
Nie działa – doanduyhai
Szczególnie w systemie Windows, ponieważ zwraca ścieżkę tylko dla woluminu, a nie dla ścieżki na komputerze. – Riduidel
org.apache.commons.vfs2.FileObject
to interfejs. Domyślam się, że pracujesz z następującym realizacji org.apache.commons.vfs2.provider.local.LocalFile
Klasa ta oferuje metodę getLocalFile()
która zwraca obiekt klasy java.io.File
Jeśli nie mamy do czynienia z LocalFile
większość innych implementacjach oferta doGetInputStream()
, który może być użyty do utworzenia obiektu pliku
'getLocalFile()' jest niefortunnie chronione (jak wskazuje javadoc), co czyni go bezużytecznym. – Riduidel
to prawda! tego nie widziałem. dzięki za wskazanie –
fileobject.getURL().getFile()
powinien działać. Ograniczeniem jest to, że musimy najpierw przekonwertować go na obiekt URL Java, który następnie może zostać użyty do rozwiązania tego pliku.
to tylko interfejs. jakiej implementacji używasz? –
Jeśli chodzi o FileListener, istnieją wszystkie metody zwracające FileObject –
no. FileObject to interfejs. spróbuj ustalić, jaka konkretna implementacja jest zwracana. –