1. Files
klass
För att arbeta med filer finns det en smart verktygsklass — java.nio.file.Files
. Den har metoder för alla tillfällen. Alla metoder i denna klass är statiska och fungerar på Path-objekt. Det finns många metoder, så vi kommer bara att överväga de viktigaste:
Metod | Beskrivning |
---|---|
|
Skapar en ny fil vars sökväg ärpath |
|
Skapar en ny katalog |
|
Skapar flera kataloger |
|
Skapar en temporär fil |
|
Skapar en tillfällig katalog |
|
Tar bort en fil eller katalog om den är tom |
|
Kopierar en fil |
|
Flyttar en fil |
|
Kontrollerar om sökvägen är en katalog och inte en fil |
|
Kontrollerar om sökvägen är en fil och inte en katalog |
|
Kontrollerar om ett objekt finns på den givna sökvägen |
|
Returnerar filstorleken |
|
Returnerar hela innehållet i en fil som en array av byte |
|
Returnerar hela innehållet i en fil som en sträng |
|
Returnerar hela innehållet i en fil som en lista med strängar |
|
Skriver en array av byte till en fil |
|
Skriver en sträng till en fil |
|
Returnerar en samling filer (och underkataloger) från den givna katalogen |
2. Skapa filer och kataloger
Filer och kataloger är mycket enkla att skapa. Låt oss övertyga oss själva med några exempel:
Koda | Notera |
---|---|
|
Skapar en fil |
|
Skapar en katalog |
|
Skapar en katalog och alla nödvändiga underkataloger om de inte finns. |
3. Kopiera, flytta och ta bort
Att kopiera, flytta och ta bort filer är lika enkelt. Detta gäller även kataloger, men de måste vara tomma.
Koda | Notera |
---|---|
|
Kopierar en fil |
|
Flyttar och byter namn på en fil |
|
Tar bort en fil |
4. Kontrollera en fils typ och existens
När du har en sökväg som tillhandahålls av någon annan vill du veta om det är en fil eller en katalog. Och i allmänhet, finns en sådan fil/katalog eller inte?
Det finns speciella metoder för detta också. Du kan också enkelt ta reda på längden på en fil:
Koda | Notera |
---|---|
|
|
|
|
|
|
|
|
5. Arbeta med filinnehåll
Slutligen finns det en hel rad metoder som gör det enkelt att läsa eller skriva innehållet i en fil. Exempel:
Koda | Beskrivning |
---|---|
|
Läs innehållet i filen som en lista med strängar. Visa strängarna |
6. Hämta innehållet i en katalog
Den mest intressanta metoden finns fortfarande kvar. Den används för att hämta filer och underkataloger i en given katalog.
Vi pratar om newDirectoryStream()
metoden, som returnerar ett speciellt DirectoryStream<Path>
objekt. Den har en iterator(!) som du kan använda för att hämta alla filer och underkataloger i en given katalog.
Det här är lättare än det låter.
Koda | Beskrivning |
---|---|
|
Hämta ett objekt med en lista över filer Bläddra över listan med filer |
Objektet DirectoryStream<Path>
har två egenskaper. För det första har den en iterator som returnerar filsökvägar, och vi kan använda det här objektet i en for-each
loop.
Och för det andra är det här objektet en dataström, så det måste explicit stängas med metoden, close()
eller deklareras för användning i ett try-with-resources
block.
7. Files.newInputStream
metod
Från och med Java 5 har klasserna FileInputStream
och FileOutputStream
fasats ut. En av deras nackdelar var att när objekt av dessa klasser skapas skapas filer omedelbart på disken. Och alla undantag relaterade till filskapande kan potentiellt kastas.
Senare erkändes detta som inte det bästa beslutet. Följaktligen rekommenderas det att använda metoderna i verktygsklassen java.nio.Files
för att skapa filobjekt.
Här är en jämförelse mellan den gamla metoden och den nya metoden för att skapa filer:
Innan |
---|
|
Efter |
|
Och det finns en liknande ersättning för FileOutputStream
:
Innan |
---|
|
Efter |
|
GO TO FULL VERSION