Citirea informațiilor dintr-un fișier cu o singură linie de cod în jdk 7 sau java 8, java

Citirea informațiilor dintr-un fișier cu o singură linie de cod în jdk 7 sau java 8, java

Nu este ușor să citiți conținutul unui fișier în Java, este necesar să utilizați un număr mare de cod exemplu, pe care deja l-am întâlnit în exemplul anterior în fișierele de citire a articolelor. A trebuit să facem "împachetări" pentru multe lucruri, de exemplu, să punem FileInputStream în BufferedReader, să setăm buclele cu condiții de ieșire ciudate și așa mai departe. De la JDK 7, situația sa îmbunătățit semnificativ. JDK oferă multe clase utile, cum ar fi Fișiere și Căi, concepute pentru a lucra cu fișiere și căi spre ele. În acest articol, veți învăța cum să citiți informații dintr-un fișier utilizând o singură linie de cod. Desigur, codul dvs. de producție va arăta diferit, mai ales dacă citiți în memorie câteva gigaocteți de date și doriți să țineți cont de codificare. Dacă codificarea nu este selectată, se utilizează codificarea implicită a platformei. Pe scurt, veți avea nevoie de un cod mai mic, dar pentru citirea rapidă și brută a fișierului, această metodă va fi suficientă. Apropo, dacă codul conține tratarea excepțiilor, va dura mai multe rânduri. În aplicația finală de producție va trebui să ia în considerare situația în care un fișier lipsește, de exemplu, prin afișarea unui mesaj de eroare către utilizator prin trimiterea metrici, menținând jurnalul de erori, etc. dar, în orice caz, va exista mult mai puțin cod de șablon în ea decât în ​​cazurile care sunt obișnuite pentru tine.







Java 8 a simplificat viața dezvoltatorilor cu noul său set de metode care profită de fluxul API (stream API). În plus, în clasa de fișiere mai multe tehnici noi au fost adăugate, utilizați întotdeauna codificarea UTF-8 în loc de orice platformă, de exemplu, Files.readAllLines (). Această metodă citește toate liniile din fișier. Byte din fișier sunt decriptați în caractere folosind codificarea UTF-8. Metoda este echivalentă cu metoda Java 7 Files.readAllLines (cale, StandardCharsets.UTF_8). Apropo, ALWAYS specifică în mod explicit codificarea caracterelor atunci când convertiți o matrice de octeți într-un string String. Indicați întotdeauna în mod explicit codificarea, chiar dacă fișierul dvs. curent citit conține numai limba engleză.

Citirea unui fișier cu o singură linie de cod în Java7 și 8

Iată un exemplu al programului nostru Java, care demonstrează cum să citiți complet un fișier cu o singură linie de cod. În exemplul nostru, folosind o nouă clasă de fișiere, introduse în JDK 1.7, clasa java.nio.file.Files oferă multe metode utile pentru lucrul cu fișiere în Java, de exemplu, a verifica dacă un fișier ascuns. sau dacă este doar pentru citire. Puteți utiliza comanda Files.readAllBytes (Path) pentru a citi complet fișierul în memorie. Această metodă returnează o serie de octeți care pot fi transmise constructorului String pentru a crea un String din acesta. Metoda se asigură, de asemenea, că fișierul va fi închis în mod corespunzător după ce a citit toate bytes, sau în cazul unei erori de intrare-ieșire sau orice altă excepție netratată, ceea ce înseamnă că nu trebuie să închideți fișierul în blocul în cele din urmă. adică nu este necesar să scrieți un cod de șablon. Trebuie menționat faptul că această metodă nu este potrivită pentru citirea fișierelor mari, deoarece dacă nu există suficient spațiu liber în Heap, este posibil să nu mai aveți memorie. De asemenea, ar trebui să specificați explicit codificarea caracterelor atunci când convertiți o matrice octet la un șir de șir pentru a evita surprize neplăcute sau erori de parsing.







Dacă doriți să citiți un fișier ca string String, puteți utiliza o altă metodă, care se numește readAllLines (Calea căii, Charset cs). Această metodă este similară celei anterioare, adică se închide, de asemenea, fișierele după citire sau în caz de eroare, dar în loc de o array de octeți, returnează un șir care este convertit de octeți utilizând setul de caractere specificat. În plus, Java 8 este o altă versiune supraîncărcat a acestei metode a fost adăugat, care nu necesită parametrul Charset (codare) și folosește UTF-8 pentru a converti byte String.

Plecările nu se termină acolo. Dacă doriți să citiți linia fișierului după linie. atunci puteți folosi metoda Files.lines () pentru a returna un flux cu șiruri de citire din fișier, în care octeții sunt convertiți în caractere folosind codarea UTF-8. Folosind metoda forEach (), puteți imprima toate liniile fișierului la consola cu o singură linie de cod Java, așa cum este demonstrat în cel de-al treilea fragment de cod.

Puteți face codul chiar mai scurt utilizând importul static în Java. după cum urmează:

Dacă utilizați Java 8, puteți utiliza și API-ul Stream, care vă permite să scrieți un cod mai concis și mai productiv, după cum se arată în exemplul următor. Aici, metoda liniilor () returnează un Stream de String, care este convertit de la octeții citiți din fișier la caractere folosind codificarea UTF-8. Aceasta este echivalentă cu apelarea în Java 7 a metodei Files.lines (cale, StandardCharsets.UTF_8).

Asta e tot ce trebuie să știți pentru a citi textul sau fișier binar cu o singură linie de cod în Java 7. După cum se poate vedea, noul API instrumente de fișiere în JDK 7 și API Stream în Java 8 este simplificată în mod semnificativ sarcina de citire a datelor dintr-un fișier în Java . Acest lucru a permis complet eliminarea codului șablonului, ceea ce a condus la un cod mult mai clar și mai concis. Apropo, dacă scrieți un cod de producție care citește informații dintr-un fișier, atunci nu uitați să acordați atenție următoarelor aspecte:

  • Fișierul poate fi prea mare pentru a fi introdus în memorie, așa că înainte de al citi, examinați cu atenție dimensiunea acestuia și luați în considerare situațiile în care nu puteți citi fișierul.
  • Mențineți în jurnal toate mesajele despre motivele pentru care nu puteți citi fișierul sau despre erorile care au avut loc în timpul procesului de lectură.
  • Specificați întotdeauna codificarea caracterelor prin citirea octeților în caractere.
  • Amintiți-vă că fișierul poate să lipsească, deci trebuie luată în considerare și această situație.






Trimiteți-le prietenilor: