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 pad

    Path 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 vormt

    Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
    
  • getName(int index) retourneert het element bij de gegeven index

    Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
    
  • getParent() retourneert het pad van de bovenliggende map

    Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
    
  • getRoot() retourneert de root van het pad

    Path 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 retourneert true en notExists retourneert in dit geval false )
  • Het niet-bestaan van een bestand of map is verfied ( exists retourneert false en notExists retourneert true )
  • Noch het bestaan, noch het niet-bestaan van een bestand of een map kan worden geverifieerd (bijvoorbeeld vanwege toegangsbeperkingen): beide exists en nonExists 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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow