Java NIO - Chemin

Comme son nom l'indique, Path est l'emplacement particulier d'une entité telle qu'un fichier ou un répertoire dans un système de fichiers afin que l'on puisse le rechercher et y accéder à cet emplacement particulier.

Techniquement en termes de Java, Path est une interface qui est introduite dans le package de fichiers Java NIO pendant la version 7 de Java, et est la représentation de l'emplacement dans un système de fichiers particulier.Comme l'interface de chemin est dans le package Java NIO, il obtient son nom qualifié en java .nio.file.Path.

En général, le chemin d'une entité peut être de deux types, l'un est le chemin absolu et l'autre est le chemin relatif.Comme le nom des deux chemins suggère que le chemin absolu est l'adresse de l'emplacement de la racine à l'entité où il se trouve tandis que le chemin relatif est l'adresse de l'emplacement qui est relatif à un autre chemin. Chemin utilise des délimiteurs dans sa définition comme "\" pour Windows et "/" pour les systèmes d'exploitation Unix.

Afin d'obtenir l'instance de Path, nous pouvons utiliser la méthode statique de la classe java.nio.file.Paths get()Cette méthode convertit une chaîne de chemin, ou une séquence de chaînes qui, une fois jointes, forment une chaîne de chemin, en une instance de Path. Cette méthode lève également une exception InvalidPathException à l'exécution si les arguments transmis contiennent des caractères non autorisés.

Comme mentionné ci-dessus, le chemin absolu est récupéré en passant l'élément racine et la liste complète des répertoires requise pour localiser le fichier.Tandis que le chemin relatif pourrait être récupéré en combinant le chemin de base avec le chemin relatif.La récupération des deux chemins serait illustrée dans l'exemple suivant

Exemple

package com.java.nio;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.file.FileSystem;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathDemo {
   public static void main(String[] args) throws IOException {
      Path relative = Paths.get("file2.txt");
      System.out.println("Relative path: " + relative);
      Path absolute = relative.toAbsolutePath();
      System.out.println("Absolute path: " + absolute);
   }
}

Jusqu'à présent, nous savons ce qu'est l'interface de chemin, pourquoi avons-nous besoin de cela et comment pourrions-nous y accéder. Nous saurions maintenant quelles sont les méthodes importantes que l'interface de chemin nous fournit.

Méthodes importantes de l'interface de chemin

  • getFileName() - Renvoie le système de fichiers qui a créé cet objet.

  • getName() - Renvoie un élément de nom de ce chemin en tant qu'objet Path.

  • getNameCount() - Renvoie le nombre d'éléments de nom dans le chemin.

  • subpath() - Renvoie un chemin relatif qui est une sous-séquence des éléments de nom de ce chemin.

  • getParent() - Renvoie le chemin du parent, ou null si ce chemin n'a pas de parent.

  • getRoot() - Renvoie le composant racine de ce chemin en tant qu'objet Path, ou null si ce chemin n'a pas de composant racine.

  • toAbsolutePath() - Renvoie un objet Path représentant le chemin absolu de ce chemin.

  • toRealPath() - Renvoie le chemin réel d'un fichier existant.

  • toFile() - Renvoie un objet File représentant ce chemin.

  • normalize() - Renvoie un chemin qui est ce chemin avec les éléments de nom redondants éliminés.

  • compareTo(Path other) - Compare deux chemins abstraits lexicographiquement.Cette méthode renvoie zéro si l'argument est égal à ce chemin, une valeur inférieure à zéro si ce chemin est lexicographiquement inférieur à l'argument, ou une valeur supérieure à zéro si ce chemin est lexicographiquement supérieur à l'argument .

  • endsWith(Path other) - Teste si ce chemin se termine par le chemin donné.Si le chemin donné a N éléments, et aucun composant racine, et que ce chemin a N éléments ou plus, alors ce chemin se termine par le chemin donné si les N derniers éléments de chaque chemin, à partir de l'élément le plus éloigné de la racine, sont égaux.

  • endsWith(String other) - Teste si ce chemin se termine par un chemin, construit en convertissant la chaîne de chemin donnée, exactement de la manière spécifiée par la méthode endsWith (Path).

Exemple

L'exemple suivant illustre les différentes méthodes de l'interface Path qui sont mentionnées ci-dessus -

package com.java.nio;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.file.FileSystem;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
public class PathDemo {
   public static void main(String[] args) throws IOException {
      Path path = Paths.get("D:/workspace/ContentW/Saurav_CV.docx");
      FileSystem fs =  path.getFileSystem();
      System.out.println(fs.toString());
      System.out.println(path.isAbsolute());
      System.out.println(path.getFileName());
      System.out.println(path.toAbsolutePath().toString());
      System.out.println(path.getRoot());
      System.out.println(path.getParent());
      System.out.println(path.getNameCount());
      System.out.println(path.getName(0));
      System.out.println(path.subpath(0, 2));
      System.out.println(path.toString());
      System.out.println(path.getNameCount());
      Path realPath = path.toRealPath(LinkOption.NOFOLLOW_LINKS);
      System.out.println(realPath.toString());
      String originalPath = "d:\\data\\projects\\a-project\\..\\another-project";
      Path path1 = Paths.get(originalPath);
      Path path2 = path1.normalize();
      System.out.println("path2 = " + path2);
   }
}