1. Path
klasse
Hvis du vil skrive et program som gjør noe med filer på disk, er det ganske enkelt. Java har mange klasser som hjelper deg med å jobbe med både selve filene og innholdet deres.
Tidlige versjoner av Java brukte klasser som File
og FileInputStream
for å jobbe med filer. Imidlertid File
er klassen nå utdatert og anbefales ikke brukt. Selvfølgelig kan du fortsatt støte på det i kode, metodeparametere eller klassekonstruktører.
Helt fra første stund vil vi begynne å lære hvordan vi jobber med filer ved hjelp av Path
klassen. Path
er klassen som erstattet File
. Det er tryggere og mer effektivt.
Path
klasse
Teknisk sett Path
er det ikke en klasse - det er et grensesnitt. Dette gjøres for å tillate skriving av en etterkommer av Path
klassen for hvert operativsystem (og filsystem).
Windows har én standard for å skrive filstier, og Linux har en annen. Selvfølgelig er det mange andre operativsystemer i verden, og hver har sin egen standard.
Det er derfor Path
grensesnittet brukes overalt i metodene som fungerer med filer, selv om arbeidet i virkeligheten skjer gjennom etterkommerklassene: WindowsPath
, UnixPath
, ...
Opprette et Path
objekt
For å lage et Path
objekt (som faktisk vil være et objekt av etterkommerklassen WindowsPath
), må du bruke en uttalelse som denne:
Path name = Path.of(path);
Hvor name
er navnet på en Path
variabel, og path
er banen til filen (eller katalogen) inkludert navnet på filen (eller katalogen). Og of
er en statisk metode for Path
klassen.
Metoden of()
brukes til å lage WindowsPath
objekter hvis programmet kjører på Windows. Hvis programmet kjører på Linux, UnixPath
opprettes objekter. Du kan ikke opprette et Path
objekt ved å bruke kode som .new Path()
Eksempler:
Kode | Merk |
---|---|
|
Banen til filen |
|
Sti til katalogen |
Filen (eller katalogen) trenger ikke å eksistere for at et gyldig Path
objekt skal eksistere. Kanskje du bare vil lage en fil... Et Path
objekt er som en oppsummert String
: det er ikke knyttet til en bestemt fil på disken - det lagrer bare en bestemt bane på disken. Det er det.
2. Metoder av Path
typen
Grensesnittet Path
har ganske mange interessante metoder. De mest interessante er presentert i tabellen nedenfor.
Metode | Beskrivelse |
---|---|
|
Returnerer den overordnede katalogen |
|
Returnerer filnavnet uten katalogen |
|
Returnerer rotkatalogen fra en bane |
|
Sjekker om gjeldende bane er absolutt |
|
Konverterer banen til absolutt |
|
Fjerner jokertegn i et katalognavn. |
|
Konstruerer en ny absolutt bane fra absolutte og relative baner. |
|
Får en relativ bane fra to absolutte baner. |
|
Sjekker om gjeldende sti starter med en gitt bane |
|
Sjekker om gjeldende bane slutter med en gitt bane |
|
Deler opp banen i deler ved å bruke / som skilletegn. Returnerer antall deler. |
|
Deler opp banen i deler ved å bruke / som skilletegn. Returnerer en del etter sin indeks. |
|
Deler opp banen i deler ved å bruke / som skilletegn. Returnerer underbanen som tilsvarer det gitte intervallet. |
|
Konverterer et Path objekt til et utdatert File objekt |
|
Konverterer et Path objekt til et URI objekt |
Nedenfor er en kort beskrivelse av eksisterende metoder.
3. Dele en sti i deler
Metoden getParent()
returnerer banen som peker til overordnet katalog for gjeldende bane. Uansett om denne banen er en katalog eller en fil:
Kode | Verdi |
---|---|
|
|
|
|
|
|
Metoden getFileName()
returnerer et enkelt fil (eller katalog) navn - hva som kommer etter det siste skilletegnet:
Kode | Verdi |
---|---|
|
|
|
|
|
|
Metoden getRoot()
returnerer banen til rotkatalogen:
Kode | Verdi |
---|---|
|
|
4. Absolutte og relative veier
Det er to typer veier: absolutt og relativ. En absolutt bane starter fra rotkatalogen. For Windows kan dette være c:\
mappen; for Linux — /
katalogen
En relativ bane er meningsfull i forhold til en katalog. Det vil si at det er som slutten på veien, men uten begynnelsen. Du kan gjøre en relativ bane til en absolutt bane og omvendt
boolean isAbsolute()
metode
Metoden sjekker om gjeldende bane er absolutt
Kode | Verdi |
---|---|
|
|
|
|
Path toAbsolutePath()
metode
Konverterer banen til absolutt. Om nødvendig legger du til den gjeldende arbeidskatalogen:
Kode | Verdi |
---|---|
|
|
|
|
Path normalize()
metode
I banen, i stedet for et katalognavn, kan du skrive "..", som betyr gå én katalog tilbake . Normalisering eliminerer disse tingene. Eksempler:
Kode | Verdi |
---|---|
|
|
|
|
Path relativize(Path other)
metode
Metoden relativize()
lar deg konstruere "forskjellene mellom baner": en bane i forhold til en annen
Kode | Verdi |
---|---|
|
|
|
|
|
UlovligArgumentUnntak: de to banene har en annen "root" (forskjellige disker) |
Path resolve(Path other)
metode
Metoden resolve()
gjør det motsatte av relativize()
: den bygger en ny absolutt vei fra en absolutt og en relativ vei.
Kode | Verdi |
---|---|
|
|
|
|
toFile()
metode
Metoden returnerer et utdatert File
objekt som lagrer samme filbane som Path
objektet.
toURI()
metode
Metoden konverterer banen til en standard URI , og returnerer et objekt som inneholder banen til filen:
Banen til filen | URI til filen |
---|---|
|
|