Créer un chemin à partir de String en Java7


280

Comment puis-je créer un java.nio.file.Pathobjet à partir d'un Stringobjet dans Java 7?

C'est à dire

String textPath = "c:/dir1/dir2/dir3";
Path path = ?;

?est le code manquant qui utilise textPath.

Réponses:


454

Vous pouvez simplement utiliser la Pathsclasse:

Path path = Paths.get(textPath);

... en supposant que vous souhaitiez utiliser le système de fichiers par défaut, bien sûr.


Existe-t-il un moyen pour que cela fonctionne avec un chemin relatif et un chemin complet? c'est-à-dire donner un chemin par rapport à l'endroit où se trouve le projet ou l'exe?
shinzou

@kuhaku: Je pense que vous devriez poser une nouvelle question avec des détails sur ce que vous essayez de faire et ce que vous avez essayé.
Jon Skeet du

@ JonSkeet est Path.get()indépendant de la plateforme? ce qui signifie que ce Path.get("lib","p2") sera comme lib\p2sous Windows et lib/p2sous linux
Kasun Siyambalapitiya

1
@KasunSiyambalapitiya: Oui, ça devrait aller comme ça.
Jon Skeet

1
@JonSkeet Paths.get ("/ opt / path /"); Il renvoie "\ opt \ path \". Pouvez-vous s'il vous plaît fournir la solution.
deadend

18

Depuis les javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

Path p1 = Paths.get("/tmp/foo"); 

est le même que

Path p4 = FileSystems.getDefault().getPath("/tmp/foo");

Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));

Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log"); 

Sous Windows, crée le fichier C: \ joe \ logs \ foo.log (en supposant que la maison de l'utilisateur est C: \ joe)
Sous Unix, crée le fichier /u/joe/logs/foo.log (en supposant que la maison de l'utilisateur est / u / joe)


6
Je suggère d'utiliser File.separaratorau lieu de prendre soin du système d'exploitation actuel. Par exemple, "/tmp/foo"estFile.separator+"tmp"+File.separator+"foo"
mat_boy

Je suppose que cela ne crée pas le fichier réel, mais cela crée un objet Path. Vous pouvez utiliser l'objet chemin pour créer le fichier réel sur le disque, à l'aide de Files.createFile (logfilePath).
Mr.Q

12

Si possible, je suggère de créer le Pathdirectement à partir des éléments du chemin:

Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"

cette plateforme est-elle indépendante?
Kasun Siyambalapitiya

7

Même lorsque la question concerne Java 7, je pense que cela ajoute de la valeur de savoir qu'à partir de Java 11, il existe une méthode statique en Pathclasse qui permet de le faire immédiatement:

Avec tout le chemin dans une chaîne:

Path.of("/tmp/foo");

Avec le chemin décomposé en plusieurs chaînes:

Path.of("/tmp","foo");


2
Enfin, ils ont fourni cette méthode!
mat_boy

@mat_boy ouais mais ce n'est pas grave, vraiment. La méthode existait déjà dans Java 7, sauf qu'elle était précédemment appelée Paths.get.
DodgyCodeException
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.