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.jpgfişier. Dacă încercați acest cod, înlocuiți pur și simplu numele
Exemplu.jpgcu calea și numele unui fișier jpeg pe computer.
java.ioclasa 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 sfarsitBloc-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
FileOutputStreamsunt 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
încercabloc putem adăuga cod pentru citit în octeți:
cititmetoda citește într-un octet din
FileInputStreamiar 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.