Java NIO - Percorso

Come suggerisce il nome, Path è la posizione particolare di un'entità come un file o una directory in un file system in modo che si possa cercarla e accedervi in ​​quella particolare posizione.

Tecnicamente in termini di Java, Path è un'interfaccia introdotta nel pacchetto di file Java NIO durante la versione 7 di Java ed è la rappresentazione della posizione in un particolare file system. Poiché l'interfaccia del percorso è nel pacchetto Java NIO, ottiene il suo nome qualificato come java .nio.file.Path.

In generale, il percorso di un'entità potrebbe essere di due tipi: uno è il percorso assoluto e l'altro è il percorso relativo.Il nome di entrambi i percorsi suggerisce che il percorso assoluto è l'indirizzo della posizione dalla radice all'entità in cui si trova mentre il percorso relativo è l'indirizzo della posizione che è relativo a qualche altro path.Path utilizza delimitatori nella sua definizione come "\" per Windows e "/" per i sistemi operativi unix.

Per ottenere l'istanza di Path possiamo utilizzare il metodo statico della classe java.nio.file.Paths get()Questo metodo converte una stringa di percorso o una sequenza di stringhe che quando unite formano una stringa di percorso in un'istanza di Path. Questo metodo genera anche un'eccezione InvalidPathException di runtime se gli argomenti passati contengono caratteri non validi.

Come accennato in precedenza, il percorso assoluto viene recuperato passando l'elemento radice e l'elenco completo delle directory richiesto per individuare il file.Mentre il percorso relativo potrebbe essere recuperato combinando il percorso di base con il percorso relativo.Il recupero di entrambi i percorsi sarebbe illustrato nel seguente esempio

Esempio

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);
   }
}

Finora sappiamo che cos'è l'interfaccia del percorso, perché ne abbiamo bisogno e come potremmo accedervi. Ora sapremmo quali sono i metodi importanti che l'interfaccia del percorso ci fornisce.

Metodi importanti di Path Interface

  • getFileName() - Restituisce il file system che ha creato questo oggetto.

  • getName() - Restituisce un elemento nome di questo percorso come oggetto Path.

  • getNameCount() - Restituisce il numero di elementi del nome nel percorso.

  • subpath() - Restituisce un percorso relativo che è una sottosequenza degli elementi del nome di questo percorso.

  • getParent() - Restituisce il percorso padre o null se questo percorso non ha un percorso padre.

  • getRoot() - Restituisce il componente root di questo percorso come oggetto Path o null se questo percorso non ha un componente root.

  • toAbsolutePath() - Restituisce un oggetto Path che rappresenta il percorso assoluto di questo percorso.

  • toRealPath() - Restituisce il percorso reale di un file esistente.

  • toFile() - Restituisce un oggetto File che rappresenta questo percorso.

  • normalize() - Restituisce un percorso che è questo percorso con elementi di nome ridondanti eliminati.

  • compareTo(Path other) - Confronta due percorsi astratti lessicograficamente.Questo metodo restituisce zero se l'argomento è uguale a questo percorso, un valore inferiore a zero se questo percorso è lessicograficamente inferiore all'argomento o un valore maggiore di zero se questo percorso è lessicograficamente maggiore dell'argomento .

  • endsWith(Path other) - Verifica se questo percorso termina con il percorso specificato.Se il percorso specificato ha N elementi e nessun componente radice, e questo percorso ha N o più elementi, allora questo percorso termina con il percorso dato se gli ultimi N elementi di ciascun percorso, a partire dall'elemento più lontano dalla radice, sono uguali.

  • endsWith(String other) - Verifica se questo percorso termina con un percorso, costruito convertendo la stringa del percorso data, esattamente nel modo specificato dal metodoendsWith (Path).

Esempio

L'esempio seguente illustra i diversi metodi dell'interfaccia Path menzionati sopra:

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);
   }
}