1. Files
klasse
For at arbejde med filer er der en smart hjælpeklasse — java.nio.file.Files
. Det har metoder til enhver lejlighed. Alle metoderne i denne klasse er statiske og fungerer på Path-objektet. Der er mange metoder, så vi vil kun overveje de vigtigste:
Metode | Beskrivelse |
---|---|
|
Opretter en ny fil, hvis sti erpath |
|
Opretter en ny mappe |
|
Opretter flere mapper |
|
Opretter en midlertidig fil |
|
Opretter en midlertidig mappe |
|
Sletter en fil eller mappe, hvis den er tom |
|
Kopierer en fil |
|
Flytter en fil |
|
Kontrollerer, om stien er en mappe og ikke en fil |
|
Kontrollerer, om stien er en fil og ikke en mappe |
|
Kontrollerer, om der findes et objekt på den givne sti |
|
Returnerer filstørrelsen |
|
Returnerer hele indholdet af en fil som en matrix af bytes |
|
Returnerer hele indholdet af en fil som en streng |
|
Returnerer hele indholdet af en fil som en liste over strenge |
|
Skriver et array af bytes til en fil |
|
Skriver en streng til en fil |
|
Returnerer en samling af filer (og undermapper) fra den givne mappe |
2. Oprettelse af filer og mapper
Filer og mapper er meget nemme at oprette. Lad os overbevise os selv med nogle eksempler:
Kode | Bemærk |
---|---|
|
Opretter en fil |
|
Opretter en mappe |
|
Opretter en mappe og alle de nødvendige undermapper, hvis de ikke findes. |
3. Kopiering, flytning og sletning
Det er lige så nemt at kopiere, flytte og slette filer. Dette gælder også for mapper, men de skal være tomme.
Kode | Bemærk |
---|---|
|
Kopierer en fil |
|
Flytter og omdøber en fil |
|
Sletter en fil |
4. Kontrol af en fils type og eksistens
Når du har en sti leveret af en anden, vil du gerne vide, om det er en fil eller en mappe. Og generelt, findes en sådan fil/mappe eller ej?
Der er også specielle metoder til dette. Du kan også nemt finde ud af længden af en fil:
Kode | Bemærk |
---|---|
|
|
|
|
|
|
|
|
5. Arbejde med filindhold
Endelig er der en hel række metoder, der gør det nemt at læse eller skrive indholdet af en fil. Eksempel:
Kode | Beskrivelse |
---|---|
|
Læs indholdet af filen som en liste over strenge. Vis strengene |
6. Hentning af indholdet af en mappe
Den mest interessante metode er stadig tilbage. Det bruges til at hente filer og undermapper i en given mappe.
Vi taler om newDirectoryStream()
metoden, som returnerer et særligt DirectoryStream<Path>
objekt. Den har en iterator(!), som du kan bruge til at hente alle filer og undermapper i en given mappe.
Dette er nemmere end det lyder.
Kode | Beskrivelse |
---|---|
|
Hent et objekt med en liste over filer Løft over listen over filer |
Objektet DirectoryStream<Path>
har to egenskaber. For det første har den en iterator, der returnerer filstier, og vi kan bruge dette objekt inde i en for-each
loop.
Og for det andet er dette objekt en datastrøm, så det skal eksplicit lukkes ved hjælp af metoden close()
, eller erklæres brug inde i en try-with-resources
blok.
7. Files.newInputStream
metode
Fra og med Java 5 er klasserne FileInputStream
og FileOutputStream
blevet forældet. En af deres ulemper var, at når objekter af disse klasser oprettes, oprettes filer straks på disken. Og alle undtagelser relateret til filoprettelse kan potentielt blive kastet.
Senere blev dette anerkendt som ikke den bedste beslutning. Derfor anbefales det at bruge værktøjsklassens metoder java.nio.Files
til at oprette filobjekter.
Her er en sammenligning mellem den gamle tilgang og den nye tilgang til oprettelse af filer:
Før |
---|
|
Efter |
|
Og der er en lignende erstatning for FileOutputStream
:
Før |
---|
|
Efter |
|
GO TO FULL VERSION