web-dev-qa-db-fra.com

Chemins indépendants de la plateforme dans Java

Je connais le chemin relatif d'un fichier et je veux le gérer comme un objet File sous Linux et Windows.

Quelle est la meilleure façon de spécifier des chemins indépendants de la plate-forme en Java?

62
jakewins

La classe File contient les membres publics suivants que vous pouvez utiliser pour les chemins de fichiers spécifiques à la plate-forme:

static String pathSeparator:
Le caractère séparateur de chemin dépendant du système, représenté par une chaîne pour plus de commodité.
static char pathSeparatorChar:
Le caractère séparateur de chemin dépendant du système.
static String separator:
Le caractère séparateur de nom par défaut dépendant du système, représenté sous forme de chaîne pour plus de commodité. static char separatorChar:
Le caractère de séparation de noms par défaut dépendant du système.

49
jjnguy

Utilisez simplement /. Je l'utilise depuis 22 ans. Jamais de problème.

88
user207421

Vous pouvez utiliser n'importe quel séparateur de chemin en Java, il fonctionnera à la fois sur Unix et Windows. Si vous voulez toujours utiliser le séparateur de chemin système, il y a la propriété File.separator qui vous donnera la bonne en fonction du courant système.

Pour la racine, vous pouvez utiliser listRoots() qui vous donne un tableau de racine, il n'y aura qu'un seul élément sur les systèmes Unix, et autant que vous avez de disques sur Windows.

13
Colin Hebert

Vous pouvez utiliser le champ statique File.separator pour récupérer le caractère de séparation spécifique à la plate-forme pour les chemins de fichier

7
Jeroen Rosenberg

Java est assez intelligent sur les chemins dans les objets File. J'utilise juste quelque chose comme "../foo/bar" et cela fonctionne dans ces deux plates-formes plus MacOSX.

5
Steven Ourada

Java 7 prend également en charge l'utilisation de Paths ici

Le chemin est obtenu en appelant la méthode getPath du FileSystem par défaut.

Vous pouvez alors en obtenir un fichier en appelant:

File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile();
3
ccDict

Personnellement, j'aime utiliser la classe Path d'Eclipse pour gérer les chemins en général, que vous pouvez utiliser de manière autonome avec quelques modifications car elle est assez isolée.

http://grepcode.com/file/repository.grepcode.com/Java/Eclipse.org/3.5/org.Eclipse.equinox/common/3.5.0/org/Eclipse/core/runtime/Path. Java /? V = source

1
Chris Dennett