1. Path
klass
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 File
och FileInputStream
för att arbeta med filer. Men File
klassen ä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 Path
klassen. Path
är klassen som ersatte File
. Det är säkrare och mer effektivt.
Path
klass
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 Path
klassen 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 Path
gränssnittet används överallt i metoderna som fungerar med filer, även om arbetet i verkligheten sker genom dess efterkommande klasser: , WindowsPath
, UnixPath
...
Skapa ett Path
objekt
För att skapa ett Path
objekt (som faktiskt kommer att vara ett objekt av den WindowsPath
efterkommande klassen), måste du använda en sats så här:
Path name = Path.of(path);
Var name
är namnet på en Path
variabel, och path
är sökvägen till filen (eller katalogen) inklusive namnet på filen (eller katalogen). Och of
är en statisk metod i Path
klassen.
Metoden of()
används för att skapa WindowsPath
objekt om programmet körs på Windows. Om programmet körs på Linux UnixPath
skapas objekt. Du kan inte skapa ett Path
objekt 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 Path
objekt ska existera. Kanske vill du bara skapa en fil... Ett Path
objekt ä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 Path
typen
Gränssnittet Path
har 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 Path objekt till ett föråldrat File objekt |
|
Konverterar ett Path objekt till ett URI objekt |
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 File
objekt som lagrar samma filsökväg som Path
objektet.
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