1. Pathklass
Om du vill skriva ett program som gör något med filer på disk är det ganska enkelt. Java har många klasser som hjälper dig att arbeta med både själva filerna och deras innehåll.
Tidiga versioner av Java använde klasser som Fileoch FileInputStreamför att arbeta med filer. Men Fileklassen är nu utfasad och rekommenderas inte för användning. Naturligtvis kan du fortfarande stöta på det i kod, metodparametrar eller klasskonstruktorer.
Redan från början kommer vi att börja lära oss hur man arbetar med filer med hjälp av Pathklassen. Pathär klassen som ersatte File. Det är säkrare och mer effektivt.
Pathklass
Tekniskt sett Pathär det inte en klass - det är ett gränssnitt. Detta görs för att tillåta skrivning av en avkomling av Pathklassen för varje operativsystem (och filsystem).
Windows har en standard för att skriva filsökvägar, och Linux har en annan. Naturligtvis finns det många andra operativsystem i världen, och alla har sin egen standard.
Det är därför Pathgränssnittet används överallt i metoderna som fungerar med filer, även om arbetet i verkligheten sker genom dess efterkommande klasser: , WindowsPath, UnixPath...
Skapa ett Pathobjekt
För att skapa ett Pathobjekt (som faktiskt kommer att vara ett objekt av den WindowsPathefterkommande klassen), måste du använda en sats så här:
Path name = Path.of(path);
Var nameär namnet på en Pathvariabel, och pathär sökvägen till filen (eller katalogen) inklusive namnet på filen (eller katalogen). Och ofär en statisk metod i Pathklassen.
Metoden of()används för att skapa WindowsPathobjekt om programmet körs på Windows. Om programmet körs på Linux UnixPathskapas objekt. Du kan inte skapa ett Pathobjekt med kod som .new Path()
Exempel:
| Koda | Notera |
|---|---|
|
Sökväg till filen |
|
Sökväg till katalogen |
Filen (eller katalogen) behöver inte existera för att ett giltigt Pathobjekt ska existera. Kanske vill du bara skapa en fil... Ett Pathobjekt är som ett hopfällt objekt String: det är inte knutet till en specifik fil på disken – det lagrar bara en viss sökväg på disken. Det är allt.
2. Metoder av Pathtypen
Gränssnittet Pathhar en hel del intressanta metoder. De mest intressanta presenteras i tabellen nedan.
| Metod | Beskrivning |
|---|---|
|
Returnerar den överordnade katalogen |
|
Returnerar filnamnet utan katalogen |
|
Returnerar rotkatalogen från en sökväg |
|
Kontrollerar om den aktuella sökvägen är absolut |
|
Konverterar vägen till absolut |
|
Tar bort jokertecken i ett katalognamn. |
|
Konstruerar en ny absolut väg från absoluta och relativa vägar. |
|
Får en relativ väg från två absoluta banor. |
|
Kontrollerar om den aktuella vägen börjar med en given väg |
|
Kontrollerar om den aktuella vägen slutar med en given väg |
|
Delar upp sökvägen i delar som används /som avgränsare. Returnerar antalet delar. |
|
Delar upp sökvägen i delar som används /som avgränsare. Returnerar en del med dess index. |
|
Delar upp sökvägen i delar som används /som avgränsare. Returnerar undersökvägen som motsvarar det givna intervallet. |
|
Konverterar ett Pathobjekt till ett föråldrat Fileobjekt |
|
Konverterar ett Pathobjekt till ett URIobjekt |
Nedan följer en kort beskrivning av de befintliga metoderna.
3. Dela upp en väg i delar
Metoden getParent()returnerar sökvägen som pekar till den överordnade katalogen för den aktuella sökvägen. Oavsett om denna sökväg är en katalog eller en fil:
| Koda | Värde |
|---|---|
|
|
|
|
|
|
Metoden getFileName()returnerar ett enda fil- (eller katalognamn) - vad som än kommer efter den sista avgränsaren:
| Koda | Värde |
|---|---|
|
|
|
|
|
|
Metoden getRoot()returnerar sökvägen till rotkatalogen:
| Koda | Värde |
|---|---|
|
|
4. Absoluta och relativa vägar
Det finns två typer av vägar: absoluta och relativa. En absolut sökväg börjar från rotkatalogen. För Windows kan detta vara c:\mappen; för Linux — /katalogen
En relativ sökväg är meningsfull i förhållande till någon katalog. Det vill säga, det är som slutet på vägen, men utan början. Du kan förvandla en relativ väg till en absolut väg och vice versa
boolean isAbsolute()metod
Metoden kontrollerar om den aktuella sökvägen är absolut
| Koda | Värde |
|---|---|
|
|
|
|
Path toAbsolutePath()metod
Konverterar vägen till absolut. Om det behövs lägger du till den aktuella arbetskatalogen till den:
| Koda | Värde |
|---|---|
|
|
|
|
Path normalize()metod
I sökvägen, istället för ett katalognamn, kan du skriva "..", vilket betyder gå tillbaka en katalog . Normalisering eliminerar dessa saker. Exempel:
| Koda | Värde |
|---|---|
|
|
|
|
Path relativize(Path other)metod
Metoden relativize()låter dig konstruera "skillnaderna mellan vägar": en väg i förhållande till en annan
| Koda | Värde |
|---|---|
|
|
|
|
|
IllegalArgumentException: de två vägarna har olika "root" (olika diskar) |
Path resolve(Path other)metod
Metoden resolve()gör motsatsen till relativize(): den bygger en ny absolut väg från en absolut och en relativ väg.
| Koda | Värde |
|---|---|
|
|
|
|
toFile()metod
Metoden returnerar ett föråldrat Fileobjekt som lagrar samma filsökväg som Pathobjektet.
toURI()metod
Metoden konverterar sökvägen till en standard- URI och returnerar ett objekt som innehåller sökvägen till filen:
| Sökväg till filen | URI till filen |
|---|---|
|
|
GO TO FULL VERSION