2013-08-28 15 views
9

Sto usando Apache Commons VFS2 (Virtual File System) per monitorare il file di modifiche nella directory. org.apache.commons.vfs2.FileListener restituisce org.apache.commons.vfs2.FileObject. Come Convertire un org.apache.commons.vfs2.FileObject in un java.io.FileConvertire un FileObject in un file

+0

questa è solo un'interfaccia. quale implementazione stai usando? –

+0

Se si intende FileListener, tutti i metodi restituiscono FileObject –

+0

no. FileObject è un'interfaccia. prova a capire quale implementazione concreta viene restituita. –

risposta

2

È possibile utilizzare

new File(fileobject.getName().getPath()); 

Si noti che un oggetto file VFS non fa riferimento necessariamente un vero e proprio file, può anche fare riferimento a un file all'interno di un file zip per esempio. Dipende dal risolutore utilizzato per ottenere un oggetto file.

Ulteriori riferimenti:

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

Non penso che funzionerà, se FileObject rappresenta un file in un file zip. –

+0

Non funziona – doanduyhai

+0

Soprattutto su Windows, poiché restituisce solo il percorso sul volume e non il percorso sulla macchina. – Riduidel

0

org.apache.commons.vfs2.FileObject è un'interfaccia. La mia ipotesi è che si sta lavorando con la seguente implementazione org.apache.commons.vfs2.provider.local.LocalFile

Questa classe offre il metodo getLocalFile(), che restituisce un oggetto della classe java.io.File

Se non si tratta di un LocalFile la maggior parte delle altre implementazioni offrono doGetInputStream() che può essere utilizzato per creare un oggetto File

+1

'getLocalFile()' è sfortunatamente protetto (come indica javadoc) che lo rende inutilizzabile. – Riduidel

+0

è vero! non l'ho visto Grazie per segnalarlo –

4

dovrebbe funzionare. L'avvertenza è che abbiamo bisogno di convertirlo prima in un oggetto URL Java, che può quindi essere utilizzato per risolvere il file.

Problemi correlati