Java Language
Neue Datei-E / A
Suche…
Syntax
- Paths.get (String first, String ... mehr) // Erstellt eine Path-Instanz anhand ihrer String-Elemente
- Paths.get (URI uri) // Erstellt eine Pfadinstanz über einen URI
Pfade erstellen
Die Path
Klasse wird verwendet, um einen Pfad im Dateisystem zu programmieren (und kann daher auf Dateien sowie Verzeichnisse verweisen, auch auf nicht vorhandene).
Ein Pfad kann mit der Hilfsklasse Paths
abgerufen werden:
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");
Informationen über einen Pfad abrufen
Informationen zu einem Pfad können mit den Methoden eines Path
Objekts Path
werden:
toString()
gibt die String-Darstellung des Pfads zurückPath p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
gibt den Dateinamen (oder genauer das letzte Element des Pfads) zurückPath p1 = Paths.get("/var/www"); // p1.getFileName() returns "www" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
getNameCount()
gibt die Anzahl der Elemente zurück, die den Pfad bildenPath p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
gibt das Element am angegebenen Index zurückPath p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
gibt den Pfad des übergeordneten Verzeichnisses zurückPath p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
gibt die Wurzel des Pfads zurückPath p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
Pfade manipulieren
Zwei Wege verbinden
Pfade können mit der Methode resolve()
werden. Der übergebene Pfad muss ein Teilpfad sein. Dies ist ein Pfad, der das Stammelement nicht enthält.
Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"
Pfad normalisieren
Pfade können die Elemente enthalten .
(was auf das aktuelle Verzeichnis verweist) und ..
(das auf das übergeordnete Verzeichnis zeigt).
Bei Verwendung in einem Pfad .
kann jederzeit entfernt werden, ohne das Ziel des Pfades zu ändern, und ..
kann zusammen mit dem vorhergehenden Element entfernt werden.
Bei der Paths-API erfolgt dies mit der Methode .normalize()
:
Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"
Informationen über das Dateisystem abrufen
Um mit dem Dateisystem zu interagieren, verwenden Sie die Methoden der Klasse Files
.
Existenz prüfen
Um das Vorhandensein der Datei oder des Verzeichnisses zu überprüfen, auf das ein Pfad verweist, verwenden Sie die folgenden Methoden:
Files.exists(Path path)
und
Files.notExists(Path path)
!Files.exists(path)
muss nicht notwendigerweise mit Files.notExists(path)
, da es drei mögliche Szenarien gibt:
- Der Datei oder das Verzeichnis Existenz überprüft wird (
exists
kehrttrue
undnotExists
gibtfalse
in diesem Fall) - Die Nichtexistenz einer Datei oder eines Verzeichnisses wird überprüft (Vorhanden
exists
false
undnotExists
gibttrue
) - Weder die Existenz noch die Nichtexistenz einer Datei oder ein Verzeichnis kann (aufgrund von Zugangsbeschränkungen zum Beispiel) überprüft werden: Sowohl
exists
undnonExists
false zurück.
Prüfen, ob ein Pfad auf eine Datei oder ein Verzeichnis verweist
Dies erfolgt mithilfe von Files.isDirectory(Path path)
und Files.isRegularFile(Path path)
Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false
Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true
Eigenschaften erhalten
Dies kann mit den folgenden Methoden erfolgen:
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
MIME-Typ abrufen
Files.probeContentType(Path path)
Dadurch wird versucht, den MIME-Typ einer Datei abzurufen. Es gibt einen MIME-Typ String wie folgt zurück:
-
text/plain
für Textdateien -
text/html
für HTML-Seiten -
application/pdf
für PDF-Dateien -
image/png
für PNG-Dateien
Dateien lesen
Dateien können byte- und zeilenweise mit der Files
Klasse gelesen werden.
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines()
nimmt optional einen Zeichensatz als Parameter (Standard ist StandardCharsets.UTF_8
):
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
Dateien schreiben
Dateien können mit der Files
Klasse biss- und zeilenweise geschrieben werden
Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
new String[]{"First line", "Second line", "Third line"});
Files.write(p2, lines);
Files.write(Path path, byte[] bytes)
Bestehende Dateien werden überschrieben, nicht vorhandene Dateien werden erstellt.