Récupère l'objet java.nio.file.Path à partir de java.io.File

215

Est-il possible d'obtenir un objet Path à partir d'un java.io.File ?

Je sais que vous pouvez convertir un chemin d'accès à un fichier en utilisant la toFile()méthode, mais je n'ai pas pu trouver la conversion opposée. Existe-t-il un moyen de le faire en Java 6 ou inférieur?

Karlovsky120
la source
Haev vous avez regardé la documentation de l'API?
Vivin Paliath
Oui, j'ai vu les méthodes resolver et resolverSibling, mais cela n'a pas exactement converti du fichier (ou de la chaîne) en chemin, mais plutôt concédé d'une manière.
Karlovsky120
1
Voici également la documentation à laquelle @VivinPaliath fait allusion.
Perception
1
Cela m'étonne de voir comment la question la plus stupide possible (je veux dire, allez, c'était dans la documentation, une courte recherche Google y aurait répondu) me fait le plus de points sur le site. : D
Karlovsky120
@ Karlovsky120 cela ne devrait pas vous étonner si vous essayez de le google vous-même;)
9ilsdx 9rvj 0lo

Réponses:

288

Oui, vous pouvez l'obtenir à partir de l' Fileobjet en utilisant File.toPath(). Gardez à l'esprit que ce n'est que pour Java 7+. Les versions Java 6 et inférieures ne l'ont pas.

Vivin Paliath
la source
1
Existe-t-il un moyen d'y parvenir en Java 6 ou inférieur?
Karlovsky120
8
Patha été introduit dans Java 7, donc malheureusement, il n'y a aucun moyen de le faire dans Java 6 et versions antérieures.
Vivin Paliath
33

De la documentation :

Les chemins associés à la valeur par défaut providersont généralement interopérables avec la java.io.Fileclasse. Les chemins créés par d'autres fournisseurs sont peu susceptibles d'être interopérables avec les noms de chemin abstraits représentés par java.io.File. La toPathméthode peut être utilisée pour obtenir un Path à partir du nom de chemin abstrait représenté par un objet java.io.File. Le chemin résultant peut être utilisé pour fonctionner sur le même fichier que l' java.io.Fileobjet. De plus, la toFileméthode est utile pour construire un à Filepartir de la Stringreprésentation d'un Path.

(c'est moi qui souligne)

Donc, pour toFile:

Renvoie un Fileobjet représentant ce chemin.

Et toPath:

Renvoie un java.nio.file.Pathobjet construit à partir de ce chemin abstrait.

wchargin
la source
1
Il veut le contraire.
Vivin Paliath
Je ne conteste pas cela :). Je viens de mentionner ce que le PO voulait.
Vivin Paliath
10

Comme beaucoup l'ont suggéré, JRE v1.7 et supérieur a File.toPath ();

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

Sur la documentation jdk 1.7 d' Oracle qui est également mentionnée dans d'autres articles ci-dessus, le code équivalent suivant est décrit dans la description de la méthode toPath (), qui peut fonctionner pour JRE v1.6;

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
dArtagnon
la source