2013-03-19 15 views
135

È possibile ottenere un oggetto Path da java.io.File?Ottieni oggetto java.nio.file.Path da java.io.File

So che è possibile convertire un percorso in un file utilizzando il metodo toFile(), ma non sono riuscito a trovare la conversione opposta. C'è un modo per farlo in Java 6 o versioni precedenti?

+0

Haev hai guardato la documentazione dell'API? –

+0

Sì, ho visto i metodi resolving e resolveSibling, ma questo non ha esattamente convertito da file (o stringa) in path, ma piuttosto in un modo conciliato. – Karlovsky120

+1

Ecco la [documentazione] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#toPath()) @VivinPaliath allude anche. – Perception

risposta

173

Sì, è possibile ottenerlo dall'oggetto File utilizzando File.toPath(). Tieni presente che questo è solo per Java 7+. Le versioni Java 6 e seguenti non ce l'hanno.

+1

C'è un modo per ottenere questo in Java 6 o inferiore? – Karlovsky120

+4

'Path' è stato introdotto in Java 7, quindi purtroppo non c'è modo di farlo in Java 6 e sotto. –

29

Da the documentation:

percorsi associati con il default provider sono generalmente interoperabile con la classe java.io.File. I percorsi creati da altri provider sono improbabili che sia interoperabile con i nomi dei percorsi astratti rappresentati entro il java.io.File. Il metodo toPath può essere utilizzato per ottenere un percorso da il nome del percorso astratto rappresentato da un oggetto java.io.File. Il percorso risultante può essere utilizzato per operare sullo stesso file dell'oggetto java.io.File. Inoltre, il metodo toFile è utile per costruire un File dalla rappresentazione String di un Path.

(sottolineatura mia)

Così, per toFile:

Restituisce un oggetto che rappresenta File questo percorso.

E toPath:

Restituisce un oggetto java.nio.file.Path costruito dal questo percorso astratto.

+1

Vuole il contrario. –

+3

@Vivin L'API fornisce sia ... – wchargin

+0

Non lo discuto :). Stavo solo citando ciò che l'OP voleva. –

5

Come molti hanno suggerito, JRE v1.7 e precedenti ha File.toPath();

File yourFile = ...; 
Path yourPath = yourFile.toPath(); 

On Oracle jdk 1.7 documentation anch'essa menzionata in altri posti di cui sopra, il seguente codice equivalente è descritto nella descrizione di topath() metodo, che può funzionare per JRE v1.6;

File yourFile = ...; 
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath()); 
Problemi correlati