"Oh, Rishi! Bună!"

"Bună, Amigo! Cum e viața?"

"Genial. Bilaabo tocmai mi-a spus o grămadă de lucruri interesante despre File și cum să lucrez cu el."

„După ce se întâmplă, cred că am ceva de adăugat la acest subiect”.

"Serios? Atunci sunt toata urechile."

"Bine, ascultă. Java evoluează constant. Dezvoltatorii săi caută în mod constant noi moduri de a face diferite lucruri mai eficient. În Java 7, au adăugat o alternativă la clasa File."

Fișiere, Cale - 1

"Alternativă?"

„Da. Au luat clasa Fișier ca bază, au adăugat câteva lucruri noi, au redenumit metodele și apoi au împărțit-o în două. Așa că acum există două clase noi: Cale și FișiereCalea este de fapt noul analog al fișierului. clasa și File este o clasă de utilitate (analog cu clasele Arrays și Collections). Toate metodele statice ale clasei File merg acolo. A face acest lucru este „mai corect” în ceea ce privește OOP."

"Ei bine, dacă este vorba de OOP, atunci bine. Deci, ce s-a schimbat?"

„În primul rând, au decis să nu reproducă metodele care au returnat  obiecte String  și File . În clasa Path  , toate metodele returnează un Path .

„În al doilea rând, au mutat o mulțime de metode utilitare statice în clasa Fișiere ”.

„În al treilea rând, a devenit mai convenabil să lucrezi cu căi relative”.

„Iată o listă a metodelor:”

Metode ale clasei Path Descriere
boolean isAbsolute() Returnează adevărat dacă calea este absolută.
Path getRoot() Returnează rădăcina căii curente, adică directorul cel mai de sus.
Path getFileName() Returnează numele fișierului din calea curentă.
Path getParent() Returnează directorul din calea curentă.
boolean startsWith(Path other) Verifică dacă calea curentă începe cu calea trecută.
boolean endsWith(Path other) Verifică dacă calea curentă se termină cu calea trecută.
Path normalize() Normalizează calea curentă. De exemplu, convertește „c:/dir/dir2/../a.txt” în „c:/dir/a.txt”
Path relativize(Path other) Calculează calea relativă a două căi, adică „diferența dintre căi”
Path resolve(String other) Rezolvă o cale absolută folosind căile curente și relative.
URI toUri() Returnează URI-ul dacă calea/fișierul curent.
Path toAbsolutePath() Convertește calea într-o cale absolută dacă este relativă.
File toFile() Returnează un obiect File care corespunde obiectului Path curent.

— Și calea actuală — ce este asta?

„Aceasta este calea care a fost transmisă constructorului obiectului Path ale cărui metode sunt apelate.”

"OK. Deci ce metode are clasa Files ?"

"Te grăbești să ajungi undeva? Îți spun chiar acum. Iată cele mai importante metode:"

Metode ale clasei Files Descriere
Path createFile(…) Creează un fișier pe disc.
Path createDirectory(…) Creează un director.
Path createDirectories(…) Creează un director și toate subdirectoarele acestuia.
Path createTempFile(…) Creează un fișier temporar.
Path createTempDirectory(…) Creează un director temporar.
void delete(Path path) Șterge un fișier.
Path copy(Path source, Path target,…) Copiază un fișier.
Path move(Path source, Path target,…) Mută ​​un fișier.
boolean isSameFile(Path, Path) Compară două fișiere.
boolean isDirectory(Path) Calea este un director?
boolean isRegularFile(Path) Calea este un fișier?
long size(Path) Returnează dimensiunea fișierului.
boolean exists(Path) Există un obiect cu același nume?
boolean notExists(Path) Nu există un obiect cu același nume?
long copy(InputStream, OutputStream) Copiază octeți din InputStream în OutputStream.
long copy(Path, OutputStream) Copiază toți octeții din Calea către OutputStream.
long copy(InputStream, Path) Copiază toți octeții din InputStream în Cale.
byte[] read(InputStream, int initialSize) Citește o matrice de octeți din InputStream.
byte[] readAllBytes(Path path) Citește toți octeții din InputStream.
List<String> readAllLines(Path path,..) Citește fișierul text și returnează o listă de șiruri.
Path write(Path path, byte[] bytes,…) Scrie o matrice de octeți într-un fișier.

"Ce interesant! Atât de multe funcții interesante și toate în același loc."

"Ei bine, uite. Să presupunem că vrei să descărcați un fișier de pe Internet și apoi să-l trimiteți cuiva. Pentru a face acest lucru, este foarte convenabil să creați un fișier temporar pe disc și să salvați datele citite pe acesta."

„Este dificil să descărcați un fișier de pe Internet?”

"Este foarte simplu. Uită-te la acest exemplu:"

Cod
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();

Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);

"Si asta e?"

"Da, ce te aşteptai să vezi? Sunt doar 4 rânduri."

" Linia 1.  Creează un obiect URL, căruia i se transmite adresa URL a fișierului imagine.

" Linia 2.  Un flux pentru citirea unui fișier (InputStream) este deschis pe obiectul url.

" Linia 3.  Metoda createTempFileeste folosită pentru a crea un fișier temporar.

" Linia 4.  Metoda Files.copy copiază datele din  inputStream la tempFile. Asta este."

"Ingenios!"

"Grozav. Mă bucur că îți place. Cred că poți să-ți dai seama și tu însuți restul metodelor. Și o să-l rog pe Diego să-ți dea mai multe sarcini despre ele."

„Apropo, iată un link bun despre acest material”