1. Path
klasse
Als je een programma wilt schrijven dat iets doet met bestanden op schijf, is dat vrij eenvoudig. Java heeft veel klassen die u helpen bij het werken met zowel de bestanden zelf als hun inhoud.
Vroege versies van Java gebruikten klassen zoals File
en FileInputStream
om met bestanden te werken. De klasse is nu echter File
verouderd en wordt niet aanbevolen voor gebruik. Natuurlijk kunt u het nog steeds tegenkomen in code, methodeparameters of klasseconstructors.
Vanaf het begin zullen we beginnen met het leren werken met bestanden met behulp van de Path
klas. Path
is de klasse die File
. Het is veiliger en efficiënter.
Path
klas
Technisch gezien Path
is het geen klasse - het is een interface. Dit wordt gedaan om het schrijven van een afstammeling van de Path
klasse voor elk besturingssysteem (en bestandssysteem) mogelijk te maken.
Windows heeft één standaard voor het schrijven van bestandspaden en Linux heeft een andere. Natuurlijk zijn er veel andere besturingssystemen in de wereld, en elk heeft zijn eigen standaard.
Daarom Path
wordt de interface overal gebruikt in de methodes die met bestanden werken, hoewel het werk in werkelijkheid gebeurt via de onderliggende klassen: WindowsPath
, UnixPath
, ...
Een Path
voorwerp maken
Om een object te maken (dat in werkelijkheid een object van de afstammingsklasse Path
zal zijn ), moet u een instructie als deze gebruiken:WindowsPath
Path name = Path.of(path);
Waar name
is de naam van een Path
variabele en path
is het pad naar het bestand (of de map) inclusief de naam van het bestand (of de map). En of
is een statische methode van de Path
klasse.
De of()
methode wordt gebruikt om WindowsPath
objecten te maken als het programma op Windows draait. Als het programma op Linux draait, UnixPath
worden er objecten gemaakt. U kunt geen Path
object maken met code zoals .new Path()
Voorbeelden:
Code | Opmerking |
---|---|
|
Pad naar het bestand |
|
Pad naar de map |
Het bestand (of de map) hoeft niet te bestaan om een geldig Path
object te laten bestaan. Misschien wilt u gewoon een bestand maken... Een Path
object is als een opgevoerd object String
: het is niet gebonden aan een specifiek bestand op schijf — het slaat alleen een bepaald pad op schijf op. Dat is het.
2. Methoden van het Path
type
De Path
interface heeft nogal wat interessante methoden. De meest interessante worden weergegeven in de onderstaande tabel.
Methode | Beschrijving |
---|---|
|
Retourneert de bovenliggende map |
|
Retourneert de bestandsnaam zonder de directory |
|
Retourneert de hoofdmap van een pad |
|
Controleert of het huidige pad absoluut is |
|
Converteert het pad naar absoluut |
|
Verwijdert jokertekens in een mapnaam. |
|
Construeert een nieuw absoluut pad uit absolute en relatieve paden. |
|
Haalt een relatief pad op uit twee absolute paden. |
|
Controleert of het huidige pad begint met een bepaald pad |
|
Controleert of het huidige pad eindigt met een bepaald pad |
|
Splitst het pad in delen met / als scheidingsteken. Retourneert het aantal onderdelen. |
|
Splitst het pad in delen met / als scheidingsteken. Retourneert een onderdeel op basis van de index. |
|
Splitst het pad in delen met / als scheidingsteken. Retourneert het subpad dat overeenkomt met het gegeven interval. |
|
Converteert een Path object naar een verouderd File object |
|
Converteert een Path object naar een URI object |
Hieronder volgt een korte beschrijving van de bestaande methoden.
3. Een pad opsplitsen in delen
De getParent()
methode retourneert het pad dat verwijst naar de bovenliggende map voor het huidige pad. Ongeacht of dit pad een map of een bestand is:
Code | Waarde |
---|---|
|
|
|
|
|
|
De getFileName()
methode retourneert een enkele bestands- (of directory-) naam — wat er ook na het laatste scheidingsteken komt:
Code | Waarde |
---|---|
|
|
|
|
|
|
De getRoot()
methode retourneert het pad naar de hoofdmap:
Code | Waarde |
---|---|
|
|
4. Absolute en relatieve paden
Er zijn twee soorten paden: absoluut en relatief. Een absoluut pad begint vanaf de hoofdmap. Voor Windows kan dit de c:\
map zijn; voor Linux - de /
map
Een relatief pad is zinvol ten opzichte van een map. Dat wil zeggen, het is als het einde van de weg, maar zonder het begin. U kunt van een relatief pad een absoluut pad maken en vice versa
boolean isAbsolute()
methode
De methode controleert of het huidige pad absoluut is
Code | Waarde |
---|---|
|
|
|
|
Path toAbsolutePath()
methode
Converteert het pad naar absoluut. Voeg indien nodig de huidige werkmap toe:
Code | Waarde |
---|---|
|
|
|
|
Path normalize()
methode
In het pad kunt u in plaats van een mapnaam ".." schrijven, wat betekent dat u één map teruggaat . Normalisatie elimineert deze dingen. Voorbeelden:
Code | Waarde |
---|---|
|
|
|
|
Path relativize(Path other)
methode
Met de relativize()
methode kunt u de "verschillen tussen paden" construeren: het ene pad ten opzichte van het andere
Code | Waarde |
---|---|
|
|
|
|
|
Illegaal Argument Uitzondering: de twee paden hebben een verschillende "root" (verschillende schijven) |
Path resolve(Path other)
methode
De resolve()
methode doet het tegenovergestelde van relativize()
: het bouwt een nieuw absoluut pad op uit een absoluut en een relatief pad.
Code | Waarde |
---|---|
|
|
|
|
toFile()
methode
De methode retourneert een gedeprecieerd File
object dat hetzelfde bestandspad opslaat als het Path
object.
toURI()
methode
De methode converteert het pad naar een standaard URI en retourneert een object dat het pad naar het bestand bevat:
Pad naar het bestand | URI naar het bestand |
---|---|
|
|
GO TO FULL VERSION