Java Language
Nieuw bestand I / O
Zoeken…
Syntaxis
- Paths.get (String first, String ... more) // Maakt een Path-instantie op basis van de String-elementen
- Paths.get (URI uri) // Maakt een Path-instantie op basis van een URI
Paden maken
De klasse Path
wordt gebruikt om programmatisch een pad in het bestandssysteem weer te geven (en kan daarom zowel naar bestanden als mappen verwijzen, zelfs naar niet-bestaande)
Een pad kan worden verkregen met behulp van de helperklasse Paths
:
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");
Informatie over een pad ophalen
Informatie over een pad kan worden verkregen met behulp van de methoden van een Path
object:
toString()
retourneert de stringvoorstelling van het padPath p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
retourneert de bestandsnaam (of, meer specifiek, het laatste element van het pad)Path 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()
retourneert het aantal elementen dat het pad vormtPath p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
retourneert het element bij de gegeven indexPath p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
retourneert het pad van de bovenliggende mapPath p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
retourneert de root van het padPath p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/" Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
Paden manipuleren
Twee wegen verbinden
Paden kunnen worden samengevoegd met de methode resolve()
. Het gepasseerde pad moet een gedeeltelijk pad zijn, wat een pad is zonder het root-element.
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"
Een pad normaliseren
Paden kunnen de elementen bevatten .
(die verwijst naar de map waarin u zich momenteel bevindt) en ..
(die verwijst naar de bovenliggende map).
Bij gebruik in een pad .
kan op elk moment worden verwijderd zonder de bestemming van het pad te wijzigen, en ..
kan samen met het voorgaande element worden verwijderd.
Met de Paths API gebeurt dit met de 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"
Informatie ophalen met behulp van het bestandssysteem
Voor interactie met het bestandssysteem gebruikt u de methoden van de klasse Files
.
Bestaan controleren
Om te controleren of het bestand of de map waarnaar een pad verwijst, gebruikt u de volgende methoden:
Files.exists(Path path)
en
Files.notExists(Path path)
!Files.exists(path)
hoeft niet noodzakelijk gelijk te zijn aan Files.notExists(path)
, omdat er drie mogelijke scenario's zijn:
- Het bestaan van een bestand of map is geverifieerd (
exists
retourneerttrue
ennotExists
retourneert in dit gevalfalse
) - Het niet-bestaan van een bestand of map is verfied (
exists
retourneertfalse
ennotExists
retourneerttrue
) - Noch het bestaan, noch het niet-bestaan van een bestand of een map kan worden geverifieerd (bijvoorbeeld vanwege toegangsbeperkingen): beide
exists
ennonExists
retourneren false.
Controleren of een pad naar een bestand of een map verwijst
Dit wordt gedaan met behulp van Files.isDirectory(Path path)
en 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
Eigenschappen verkrijgen
Dit kan op de volgende manieren:
Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)
Files.isHidden(Path path)
Files.isSymbolicLink(Path path)
MIME-type verkrijgen
Files.probeContentType(Path path)
Dit probeert het MIME-type van een bestand te verkrijgen. Het geeft een MIME-type String als volgt terug:
-
text/plain
voor tekstbestanden -
text/html
voor HTML-pagina's -
application/pdf
voor PDF-bestanden -
image/png
voor PNG-bestanden
Bestanden lezen
Bestanden kunnen byte- en lijnsgewijs worden gelezen met behulp van de klasse Files
.
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);
Files.readAllLines()
neemt optioneel een tekenset als parameter (standaard is StandardCharsets.UTF_8
):
List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);
Bestanden schrijven
Bestanden kunnen bijt- en lijnsgewijs worden geschreven met behulp van de klasse Files
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)
Bestaande bestanden worden genegeerd, niet-bestaande bestanden worden aangemaakt.