1. Pathklasse
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 Fileen FileInputStreamom met bestanden te werken. De klasse is nu echter Fileverouderd 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 Pathklas. Pathis de klasse die File. Het is veiliger en efficiënter.
Pathklas
Technisch gezien Pathis het geen klasse - het is een interface. Dit wordt gedaan om het schrijven van een afstammeling van de Pathklasse 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 Pathwordt de interface overal gebruikt in de methodes die met bestanden werken, hoewel het werk in werkelijkheid gebeurt via de onderliggende klassen: WindowsPath, UnixPath, ...
Een Pathvoorwerp maken
Om een object te maken (dat in werkelijkheid een object van de afstammingsklasse Pathzal zijn ), moet u een instructie als deze gebruiken:WindowsPath
Path name = Path.of(path);
Waar nameis de naam van een Pathvariabele en pathis het pad naar het bestand (of de map) inclusief de naam van het bestand (of de map). En ofis een statische methode van de Pathklasse.
De of()methode wordt gebruikt om WindowsPathobjecten te maken als het programma op Windows draait. Als het programma op Linux draait, UnixPathworden er objecten gemaakt. U kunt geen Pathobject 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 Pathobject te laten bestaan. Misschien wilt u gewoon een bestand maken... Een Pathobject 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 Pathtype
De Pathinterface 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 Pathobject naar een verouderd Fileobject |
|
Converteert een Pathobject naar een URIobject |
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 Fileobject dat hetzelfde bestandspad opslaat als het Pathobject.
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