Maison >Java >javaDidacticiel >Comment puis-je construire un chemin relatif à partir de deux chemins absolus en Java ?

Comment puis-je construire un chemin relatif à partir de deux chemins absolus en Java ?

DDD
DDDoriginal
2024-12-07 07:20:15638parcourir

How Can I Construct a Relative Path from Two Absolute Paths in Java?

Construction de chemin relatif à partir de chemins absolus en Java

Considérez le défi de construire un chemin relatif à partir de deux chemins absolus. Par exemple, étant donné ces chemins absolus :

/var/data/stuff/xyz.dat
/var/data

Le chemin relatif souhaité, avec le deuxième chemin comme base, est :

./stuff/xyz.dat

Comment cela peut-il être réalisé efficacement en Java ?

Solution utilisant l'URI

Pour résoudre ce problème, envisagez d'utiliser la classe URI de Java. L'URI fournit une méthode, relativiser, qui automatise le processus de création d'un chemin relatif basé sur les chemins absolus fournis.

String path = "/var/data/stuff/xyz.dat";
String base = "/var/data";

String relative = new File(base).toURI().relativize(new File(path).toURI()).getPath();

// relative == "stuff/xyz.dat"

Solution utilisant le chemin Java 1.7

Si votre version de Java est 1.7 ou plus tard, vous pourrez également exploiter la méthode relativize disponible dans java.nio.file.Path.

String path = "/var/data/stuff/xyz.dat";
String base = "/var/data";

Path basePath = Paths.get(base);
Path absPath = Paths.get(path);
Path relativePath = basePath.relativize(absPath);

// relativePath == Paths.get("stuff/xyz.dat")

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn