1. Pathklasse
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 Fileog FileInputStreamfor å jobbe med filer. Imidlertid Fileer 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 Pathklassen. Pather klassen som erstattet File. Det er tryggere og mer effektivt.
Pathklasse
Teknisk sett Pather det ikke en klasse - det er et grensesnitt. Dette gjøres for å tillate skriving av en etterkommer av Pathklassen 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 Pathgrensesnittet brukes overalt i metodene som fungerer med filer, selv om arbeidet i virkeligheten skjer gjennom etterkommerklassene: WindowsPath, UnixPath, ...
Opprette et Pathobjekt
For å lage et Pathobjekt (som faktisk vil være et objekt av etterkommerklassen WindowsPath), må du bruke en uttalelse som denne:
Path name = Path.of(path);
Hvor nameer navnet på en Pathvariabel, og pather banen til filen (eller katalogen) inkludert navnet på filen (eller katalogen). Og ofer en statisk metode for Pathklassen.
Metoden of()brukes til å lage WindowsPathobjekter hvis programmet kjører på Windows. Hvis programmet kjører på Linux, UnixPathopprettes objekter. Du kan ikke opprette et Pathobjekt 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 Pathobjekt skal eksistere. Kanskje du bare vil lage en fil... Et Pathobjekt 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 Pathtypen
Grensesnittet Pathhar 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 Pathobjekt til et utdatert Fileobjekt |
|
Konverterer et Pathobjekt til et URIobjekt |
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 Fileobjekt som lagrer samme filbane som Pathobjektet.
toURI()metode
Metoden konverterer banen til en standard URI , og returnerer et objekt som inneholder banen til filen:
| Banen til filen | URI til filen |
|---|---|
|
|
GO TO FULL VERSION