Un flux de filtrare se ataseaza altui flux pentru a filtra datele care
sunt citite/scrise de catre acel flux. Clasele pentru fluxuri
de filtrare au ca superclase clasele abstracte FilterInputStream
(pentru filtrarea fluxurilor de intrare) si FilterOutputStream
(pentru filtrarea fluxurilor de iesire).
Clasele pentru filtrarea datelor sunt:
Observati
ca toate aceste clase descriu fluxuri de octeti.
Filtrarea datelor nu trebuie vazuta ca o metoda de a elimina anumiti octeti
dintr-un flux ci de transforma acesti octeti īn date care sa
poata fi interpretate sub alta forma.
Asa cum am vazut la citirea/scrierea cu zona tampon clasele de filtrare
BufferedInputStream si BufferedOutputStream grupeaza datele unui flux īntr-un
buffer, urmānd ca citirea/scrierea sa se faca prin
intermediu acelui buffer.
Asadar fluxurile de filtrare nu elimina date citite sau scrise de un anumit flux, ci introduc o noua modalitate de manipulare
a lor. Din acest motiv fluxurile de filtrare vor contine anumite metode
specializate pentru citirea/scrierea datelor, altele decāt cele comune tuturor
fluxurilor (metode de tip read/write).
Folosirea fluxurilor de filtrare se face prin atasarea lor de un flux care se ocupa efectiv de citirea/scrierea datelor:
Cele mai importante clase din aceasta categorie sunt DataInputStream si DataOutputStream
Aceste clase ofera metode prin care un flux nu mai este vazut ca o īnsiruire de octeti, ci ca o sursa de date primitive. Prin urmare vor furniza metode pentru citirea si scrierea datelor la nivel de tip de data si nu la nivel de octet. Constructorii si metodele cele mai importante (altele decāt read/write) sunt date īn tabelul de mai jos :
DataInputStream |
DataOuputStream |
//Constructor DataInputStream(InputStream in) |
//Constructor DataOutputStream(OutputStream out) |
readBoolean( ) readByte( ) readChar( ) readDouble( ) readFloat( ) readInt( ) readLong( ) readShort( ) readUnsignedByte( ) readUnsignedShort( ) String readUTF( ) | writeBoolean( boolean v ) writeByte( int v ) writeChar( int v ) writeDouble( double v ) writeFloat( float v ) writeInt( int v ) writeLong( long v ) writeShort( int v ) writeBytes( String s ) writeChars( String s ) writeUTF( String str ) |
Aceste metode au denumirile generice de readXXX si writeXXX
specificate de interfetele DataInput
si DataOutput. Pot provoca exceptii de tipul IOException.
Atentie: Un fisier īn care au fost scrise
informatii folosind metode writeXXX nu va putea fi citit decāt prin metode
readXXX.
|