Fluxurile de ieșire, fluxul de ieșire

Biblioteca standard Java are instrumente de ieșire foarte avansate. Toate posibilitățile de ieșire a datelor sunt concentrate în pachetul java.io.

Există două ierarhii de clasă de ieșire paralelă. OutputStream și Writer. Clasa Writer este introdusă în cele mai recente versiuni ale Java.







Acest articol abordează utilizarea firelor pentru a trimite date către un fișier. Ierarhia fluxului de ieșire al OutputStream este prezentată în figura următoare.

Fluxurile de ieșire, fluxul de ieșire

Stream Stream este o valoare abstractă a unei surse sau a unui receptor de date capabil să proceseze informații. Există două tipuri de fluxuri: byte și caracter. În anumite situații, fluxurile de caractere sunt mai eficiente decât fluxurile de octeți. Clase derivate din clasele OutputStream sau Writer. au metode cu numele write () pentru scrierea bytelor singulare sau a unui tablou de octeți (responsabil pentru ieșirea datelor).

Clasa OutputStream este o clasă abstractă care definește ieșirea fluxului de octeți.

Moștenitorii acestei clase determină unde să trimită date: la o serie de octeți, la un fișier sau un canal. Din matricea de octeți, puteți crea un șir de text String.

Metode ale clasei OutputStream:

  • void write (int b) scrie un octet la fluxul de ieșire. Argumentul acestei metode este de tipul int, care vă permite să suneți scrierea prin trecerea unei expresii către ea, fără a fi nevoie să aruncați tipul ei în byte.
  • void write (byte b []) scrie întreaga matrice de octeți specificată în fluxul de ieșire.
  • scriere void (byte b [], int off, int len) scrie în porțiunea flux de matrice len octeți, începând cu elementul b [off].
  • void flush () șterge toate tampoanele de ieșire, finalizând operația de ieșire.
  • void close () închide fluxul de ieșire. Următoarele încercări de a scrie în acest thread vor ridica un IOException.

Clasa ByteArrayOutputStream reprezintă un flux de ieșire care utilizează un șir de octeți ca locație de ieșire. Pentru a crea un obiect din această clasă, puteți utiliza unul dintre constructorii săi:

Primul constructor creează o serie de date pentru a stoca octeți de 32 de octeți în lungime, iar al doilea constructor creează o matrice de lungime.

Exemple de utilizare a clasei ByteArrayOutputStream:

În clasa ByteArrayOutputStream, metoda de scriere scrie anumite date (o array de octeți) în flux. Această matrice de octeți stocate într-un câmp buf facilitate ByteArrayOutputStream sigur, care este, de asemenea, o serie de octeți (protejat byte [] buf). Deoarece metoda de scriere poate arunca o excepție, apelul la această metodă este plasat în blocul try..catch.

Folosind metodele toString () și toByteArray (). puteți obține o serie de octeți de buf ca text sau direct ca o serie de octeți.

Utilizând metoda writeTo, puteți redirecționa o matrice de octeți într-un alt fir. Această metodă are ca obiect un obiect OutputStream ca parametru. în care este scrisă matricea octeților:







Pentru ByteArrayOutputStream, nu este necesar să închideți în mod explicit fluxul folosind metoda de închidere.

Clasa FileOutputStream creează un obiect OutputStream pe care îl puteți utiliza pentru a scrie octeți într-un fișier. Aceasta este clasa principală pentru lucrul cu fișiere. Crearea unui obiect nou nu depinde de existența sau nu a fișierului specificat. Dacă fișierul lipsește, se va crea un nou fișier. Dacă se face o încercare de a deschide un fișier care este doar pentru citire, va fi aruncată o excepție.

FileOutputStream are următorii constructori:

Semnificația designerilor acestora din urmă este clară din descrierea lor. Dar există mai multe nuanțe:

  • Când deschideți un fișier pentru scriere, dacă fișierul nu există, acesta va fi creat.
  • Dacă fișierul există, acesta va fi complet actualizat. Ie dacă deschideți și închideți imediat fișierul, conținutul fișierului va fi distrus; Fișierul real de pe disc va deveni zero.
  • Excepția de la regula anterioară este ultima dintre constructori. Dacă al treilea parametru append este setat la true, atunci puteți adăuga la sfârșitul fișierului.

Nu există nicio funcționalitate suplimentară în comparație cu clasa de bază FileOutputStream.

Clasa BufferedOutputStream creează un tampon pentru fluxurile de ieșire. Acest buffer înregistrează octeții de ieșire fără a accesa în mod constant dispozitivul. Iar atunci când tamponul este plin, datele sunt scrise.

Clasa BufferedOutputStream din constructor ia ca argument un obiect OutputStream - în exemplul acesta, acesta este fluxul fișierului de ieșire FileOutputStream.

BufferedOutputStream adaugă multe caracteristici noi, este ușor de a optimiza acțiunea vyvodai flux trebuie să fie utilizat pentru a organiza fluxul de ieșire tamponat mai eficient.

Clasa DataOutputStream vă permite să scrieți date într-un flux prin interfața DataOutput, care definește metode care convertesc valorile elementare într-o formă de secvență octet. Astfel de fluxuri facilitează salvarea datelor binare într-un fișier.

Pentru a scrie fiecare dintre tipurile primitive, se folosește metoda proprie a clasei DataOutputStream:

  • writeByte (valoare int) - scrie în stream 1 octet
  • writeChar (valoare int) - scrie o valoare de 2 octeți de caractere
  • writeInt (valoarea int) - scrie o int integer int în fluxul int
  • writeShort (int v) - scrie fluxul la scurt
  • writeFloat (float value) - scrie o valoare float de 4 octeți în flux
  • writeDouble (valoare dublă) - scrie o valoare dublă de 8 byte în flux
  • writeBoolean (valoare booleană) - scrie o valoare booleană de un octet în flux
  • writeLong (valoare lungă) - scrie o valoare lungă în flux
  • writeUTF (String value) - scrie în flux un șir codificat în UTF-8

PrintStream este clasa care este utilizată pentru a transmite informații către consola. Când vom folosi System.out.println de apel () pentru a scrie unele informații la utilizarea PrintStream astfel, din moment ce clasa variabila de sistem out este clasa obiect PrintStream, și metoda println () - o metodă de clasa PrintStream.

Dar puteți utiliza PrintStream pentru a scrie informații în fluxul de ieșire. De exemplu, scrieți informațiile într-un fișier:

În acest exemplu, folosim constructorul PrintStream. care acceptă fluxul de ieșire FileOutputStream ca parametru. De asemenea, puteți utiliza constructorul cu numele fișierului pentru înregistrare: PrintStream (Nume fișier String).

Folosind metoda println (), informațiile sunt scrise în fluxul de ieșire - adică în obiectul FileOutputStream. În cazul în care ieșirea la consola folosind System.out.println (), ieșirea consolei este consola.

PrintStream utilizează următoarele metode pentru a transmite informații către fluxul de ieșire:

Următorul cod arată cum se utilizează ieșirea formatată a clasei PrintStream:

Clasa ObjectOutputStream este utilizată pentru a serializa obiecte într-un flux. Serializarea este procesul de înregistrare a stării unui obiect într-un fir, respectiv procesul de preluare sau restabilire a stării unui obiect dintr-un flux se numește deserializare. Serializarea este foarte convenabilă atunci când lucrați cu obiecte complexe.

Pentru a crea un obiect ObjectOutputStream, trebuie să treci un flux către constructor în care vor fi scrise obiecte.

Pentru a înregistra date, ObjectOutputStream utilizează o serie de metode, printre care următoarele:







Trimiteți-le prietenilor: