2013-08-28 11 views
9

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.FileKonwersja pliku FileObject do pliku

+0

to tylko interfejs. jakiej implementacji używasz? –

+0

Jeśli chodzi o FileListener, istnieją wszystkie metody zwracające FileObject –

+0

no. FileObject to interfejs. spróbuj ustalić, jaka konkretna implementacja jest zwracana. –

Odpowiedz

2

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:

  1. [VFS-443] Need an easy way to convert from a FileObject to a File - ASF JIRA.
+0

Nie sądzę, że to zadziała, jeśli FileObject reprezentuje plik w pliku zip. –

+0

Nie działa – doanduyhai

+0

Szczególnie w systemie Windows, ponieważ zwraca ścieżkę tylko dla woluminu, a nie dla ścieżki na komputerze. – Riduidel

0

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

+1

'getLocalFile()' jest niefortunnie chronione (jak wskazuje javadoc), co czyni go bezużytecznym. – Riduidel

+0

to prawda! tego nie widziałem. dzięki za wskazanie –

4
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.

Powiązane problemy