Java NIO - Pfad
Wie der Name schon sagt, ist Pfad der bestimmte Speicherort einer Entität wie einer Datei oder eines Verzeichnisses in einem Dateisystem, sodass an diesem bestimmten Speicherort gesucht und darauf zugegriffen werden kann.
Technisch gesehen ist Path in Bezug auf Java eine Schnittstelle, die in Java NIO-Dateipaket während Java Version 7 eingeführt wurde und die Darstellung des Speicherorts in einem bestimmten Dateisystem darstellt. Da sich die Pfadschnittstelle in einem Java NIO-Paket befindet, erhält sie ihren qualifizierten Namen als Java .nio.file.Path.
Im Allgemeinen kann der Pfad einer Entität von zwei Typen sein: der absolute Pfad und der relative Pfad. Der Name beider Pfade legt nahe, dass der absolute Pfad die Standortadresse von der Wurzel zur Entität ist, in der sie sich befindet, während der relative Pfad die Standortadresse ist Dies ist relativ zu einem anderen Pfad. Path verwendet Trennzeichen in seiner Definition als "\" für Windows und "/" für Unix-Betriebssysteme.
Um die Instanz von Path zu erhalten, können wir die statische Methode der Klasse java.nio.file.Paths verwenden get()Diese Methode konvertiert eine Pfadzeichenfolge oder eine Folge von Zeichenfolgen, die beim Verbinden eine Pfadzeichenfolge bilden, in eine Pfadinstanz. Diese Methode löst auch die Laufzeit-InvalidPathException aus, wenn die übergebenen Argumente unzulässige Zeichen enthalten.
Wie oben erwähnt, wird der absolute Pfad durch Übergeben des Stammelements und der vollständigen Verzeichnisliste abgerufen, die zum Auffinden der Datei erforderlich ist. Während der relative Pfad durch Kombinieren des Basispfads mit dem relativen Pfad abgerufen werden kann. Das Abrufen beider Pfade wird im folgenden Beispiel veranschaulicht
Beispiel
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);
}
}
Bisher wissen wir, was eine Pfadschnittstelle ist, warum wir das brauchen und wie wir darauf zugreifen können. Jetzt würden wir wissen, welche wichtigen Methoden uns die Pfadschnittstelle bietet.
Wichtige Methoden der Pfadschnittstelle
getFileName() - Gibt das Dateisystem zurück, das dieses Objekt erstellt hat.
getName() - Gibt ein Namenselement dieses Pfads als Pfadobjekt zurück.
getNameCount() - Gibt die Anzahl der Namenselemente im Pfad zurück.
subpath() - Gibt einen relativen Pfad zurück, der eine Teilsequenz der Namenselemente dieses Pfads ist.
getParent() - Gibt den übergeordneten Pfad zurück oder null, wenn dieser Pfad keinen übergeordneten Pfad hat.
getRoot() - Gibt die Stammkomponente dieses Pfads als Pfadobjekt zurück oder null, wenn dieser Pfad keine Stammkomponente enthält.
toAbsolutePath() - Gibt ein Path-Objekt zurück, das den absoluten Pfad dieses Pfads darstellt.
toRealPath() - Gibt den tatsächlichen Pfad einer vorhandenen Datei zurück.
toFile() - Gibt ein Dateiobjekt zurück, das diesen Pfad darstellt.
normalize() - Gibt einen Pfad zurück, bei dem es sich um diesen Pfad handelt, bei dem redundante Namenselemente entfernt wurden.
compareTo(Path other) - Vergleicht zwei abstrakte Pfade lexikografisch. Diese Methode gibt Null zurück, wenn das Argument diesem Pfad entspricht, einen Wert kleiner als Null, wenn dieser Pfad lexikografisch kleiner als das Argument ist, oder einen Wert größer als Null, wenn dieser Pfad lexikografisch größer als das Argument ist .
endsWith(Path other) - Testet, ob dieser Pfad mit dem angegebenen Pfad endet. Wenn der angegebene Pfad N Elemente und keine Stammkomponente enthält und dieser Pfad N oder mehr Elemente enthält, endet dieser Pfad mit dem angegebenen Pfad, wenn die letzten N Elemente jedes Pfads. beginnend mit dem Element, das am weitesten von der Wurzel entfernt ist, sind sie gleich.
endsWith(String other) - Testet, ob dieser Pfad mit einem Pfad endet, der durch Konvertieren der angegebenen Pfadzeichenfolge genau in der von der Methode "EndsWith (Path)" angegebenen Weise erstellt wurde.
Beispiel
Das folgende Beispiel zeigt die verschiedenen Methoden der Pfadschnittstelle, die oben erwähnt wurden:
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);
}
}