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.
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)
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 neededString textPath = path.toString();// "C:\\dir1\\dir2\\dir3"
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:
Path.get()
indépendant de la plateforme? ce qui signifie que cePath.get("lib","p2")
sera commelib\p2
sous Windows etlib/p2
sous linuxDepuis les javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
est le même que
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)
la source
File.separarator
au lieu de prendre soin du système d'exploitation actuel. Par exemple,"/tmp/foo"
estFile.separator+"tmp"+File.separator+"foo"
Si possible, je suggère de créer le
Path
directement à partir des éléments du chemin:la source
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
Path
classe 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");
la source
Paths.get
.