Créer des chemins relatifs à partir de deux chemins absolus
Étant donné deux chemins absolus, tels que :
/var/data/stuff/xyz.dat /var/data
comment peut-on on génère un chemin relatif qui part du deuxième chemin ? Par exemple, le résultat souhaité pour les chemins ci-dessus est :
./stuff/xyz.dat
Solution utilisant l'URI
Une approche exploite la classe URI, qui fournit une méthode de relativisation pour gérer de telles conversions :
String path = "/var/data/stuff/xyz.dat"; String base = "/var/data"; // Convert the paths to URIs URI pathURI = new File(path).toURI(); URI baseURI = new File(base).toURI(); // Obtain the relative URI URI relativeURI = pathURI.relativize(baseURI); // Extract the relative path String relativePath = relativeURI.getPath(); // relativePath == "stuff/xyz.dat"
Remarque : Pour les chemins de fichiers en particulier, Java 1.7 et versions ultérieures proposent la méthode relativize sur l'interface java.nio.file.Path, comme suggéré par @Jirka Meluzin.
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!