1. Files
clasa
Pentru a lucra cu fișiere, există o clasă de utilitare slick — java.nio.file.Files
. Are metode pentru fiecare ocazie. Toate metodele acestei clase sunt statice și funcționează pe obiectul Path. Există o mulțime de metode, așa că le vom lua în considerare doar pe cele mai importante:
Metodă | Descriere |
---|---|
|
Creează un fișier nou a cărui cale estepath |
|
Creează un director nou |
|
Creează mai multe directoare |
|
Creează un fișier temporar |
|
Creează un director temporar |
|
Șterge un fișier sau un director dacă este gol |
|
Copiază un fișier |
|
Mută un fișier |
|
Verifică dacă calea este un director și nu un fișier |
|
Verifică dacă calea este un fișier și nu un director |
|
Verifică dacă un obiect există pe calea dată |
|
Returnează dimensiunea fișierului |
|
Returnează întregul conținut al unui fișier ca o matrice de octeți |
|
Returnează întregul conținut al unui fișier ca șir |
|
Returnează întregul conținut al unui fișier ca o listă de șiruri |
|
Scrie o matrice de octeți într-un fișier |
|
Scrie un șir într-un fișier |
|
Returnează o colecție de fișiere (și subdirectoare) din directorul dat |
2. Crearea de fișiere și directoare
Fișierele și directoarele sunt foarte ușor de creat. Să ne convingem cu câteva exemple:
Cod | Notă |
---|---|
|
Creează un fișier |
|
Creează un director |
|
Creează un director și toate subdirectoarele necesare dacă acestea nu există. |
3. Copierea, mutarea și ștergerea
Copierea, mutarea și ștergerea fișierelor este la fel de ușoară. Acest lucru este valabil și pentru directoare, dar acestea trebuie să fie goale.
Cod | Notă |
---|---|
|
Copiază un fișier |
|
Mută și redenumește un fișier |
|
Șterge un fișier |
4. Verificarea tipului și existenței unui fișier
Când aveți o cale furnizată de altcineva, doriți să știți dacă este un fișier sau un director. Și în general, un astfel de fișier/director există sau nu?
Există și metode speciale pentru acest lucru. De asemenea, puteți afla cu ușurință lungimea unui fișier:
Cod | Notă |
---|---|
|
|
|
|
|
|
|
|
5. Lucrul cu conținutul fișierului
În cele din urmă, există o serie întreagă de metode care facilitează citirea sau scrierea conținutului unui fișier. Exemplu:
Cod | Descriere |
---|---|
|
Citiți conținutul fișierului ca o listă de șiruri de caractere. Afișați șirurile |
6. Obținerea conținutului unui director
Cea mai interesantă metodă rămâne încă. Este folosit pentru a obține fișiere și subdirectoare într-un anumit director.
Vorbim despre newDirectoryStream()
metodă, care returnează un DirectoryStream<Path>
obiect special. Are un iterator(!) pe care îl puteți folosi pentru a obține toate fișierele și subdirectoarele unui director dat.
Acest lucru este mai ușor decât pare.
Cod | Descriere |
---|---|
|
Obțineți un obiect cu o listă de fișiere Buclă peste lista de fișiere |
Obiectul DirectoryStream<Path>
are două proprietăți. În primul rând, are un iterator care returnează căile fișierelor și putem folosi acest obiect în interiorul unei for-each
bucle.
Și în al doilea rând, acest obiect este un flux de date, deci trebuie să fie închis în mod explicit folosind close()
metoda sau să fie utilizat în interiorul unui try-with-resources
bloc.
7. Files.newInputStream
metoda
Începând cu Java 5, clasele FileInputStream
și FileOutputStream
au fost depreciate. Unul dintre dezavantajele lor a fost că atunci când sunt create obiecte din aceste clase, fișierele sunt create imediat pe disc. Și toate excepțiile legate de crearea fișierelor ar putea fi eliminate.
Mai târziu, aceasta a fost recunoscută ca nu cea mai bună decizie. În consecință, se recomandă utilizarea metodelor java.nio.Files
clasei de utilitate pentru a crea obiecte fișier.
Iată o comparație între vechea abordare și noua abordare pentru crearea fișierelor:
Inainte de |
---|
|
După |
|
Și există un înlocuitor similar pentru FileOutputStream
:
Inainte de |
---|
|
După |
|
GO TO FULL VERSION