Cum să citești și să scrii fluxuri de byte

Citirea și scrierea fluxurilor binare este una dintre cele mai comune sarcini de I / O pe care le poate efectua o aplicație Java. Poate fi efectuată prin examinarea fiecărui octet individual într-un flux sau prin utilizarea unei abordări tamponate mai structurate.

Notă: Acest articol privește citirea datelor binare de la un

Exemplu.jpg
fişier. Dacă încercați acest cod, înlocuiți pur și simplu numele
Exemplu.jpg
cu calea și numele unui fișier jpeg pe computer.

Byte by Byte

java.io
clasa a fost primul api Java care a furnizat funcționalitate de intrare / ieșire. Are două metode care pot fi utilizate pentru a introduce și ieși fluxuri de octeți (blocuri de 8 biți) din și către un fișier. Aceste clase sunt
FileInputStream
și
FileOutputStream
. Aceste metode furnizează o metodă de bază de I / O, permițând introducerea unui fișier sau ieșirea unui octet la un moment dat. În practică, este mai bine să folosiți o metodă tamponată pentru fluxurile binare, dar este bine să analizați cel mai de bază bloc de construcție al funcționalității Java I / O..

Observați cum plasăm manipularea I / O în interiorul unei

incearca, prinde, in sfarsit
Bloc-asta înseamnă să ne asigurăm că gestionăm excepțiile IO și să închidem corect fluxurile. Blocul de captură va afișa orice excepție de E / S care apare și va imprima un mesaj pentru utilizator. În blocul final este important să închideți fluxurile în mod explicit apelând la metoda de închidere, altfel vor rămâne deschise și o pierdere de resurse. Există o verificare pentru a vedea dacă
FileInputStream
și
FileOutputStream
sunt nule înainte de a încerca să închidă. Acest lucru se datorează faptului că o eroare de E / S ar putea să apară înainte de inițializarea fluxurilor. De exemplu, dacă numele fișierului este incorect, fluxul nu va fi deschis corect
încerca
bloc putem adăuga cod pentru citit în octeți:
citit
metoda citește într-un octet din
FileInputStream
iar metoda de scriere scrie un octet la
FileOutputStream
. Când s-a atins sfârșitul fișierului și nu mai există biți de intrare, valoarea -1 este returnată.

Acum că Java 7 a fost lansat, puteți vedea avantajul uneia dintre noile sale funcții - încercați cu blocul de resurse. Aceasta înseamnă că dacă identificăm fluxurile la blocul de încercare la început, se va ocupa de închiderea fluxului pentru noi. Acest lucru elimină necesitatea blocului final din exemplul precedent:

Listările complete de coduri Java pentru cele două versiuni ale programului de citire a octeților pot fi găsite în codul de exemplu al fluxului binar.