Fluxuri
Fluxurile Java pun la dispozi]ie modalitatea prin care dou\ sau mai multe procese pot comunica f\r\ a avea informa]ii unul despre cel\lalt. Mai mult, prin fluxuri este posibil\ comunicarea īntre dou\ sau mai multe fire de execu]ie ale aceleia[i aplica]ii. Fluxurile sunt secven]e de octe]i (8 bi]i).
Proces produc\tor flux de ie[ire Proces consumator
Proces consumator flux de intrare Proces produc\tor
fluxurile sunt unidirec]ionale, de la produc\tor la consumator
fiecare flux are un singur proces produc\tor [i un singur proces consumator
īntre dou\ procese pot exista oricāte fluxuri, orice proces putānd fi atāt produc\tor [i consumator īn acela[i timp, dar pe fluxuri diferite
consumatorul [i produc\torul nu comunic\ direct printr-o interfa]\ de flux ci prin intermediul codului Java de tratare a fluxurilor
Importan]a : ajut\ la citirea scrierea informa]iilor in dispozitive de intrare/ie[ire, fi[iere, baze de date, etc.
Toate interfe]ele pentru fluxuri implementeaz\ un set de metode de baz\, comune tuturor categoriilor de fluxuri. Metodele standard pentru lucrul cu fluxuri se g\sesc\ īn pachetul java.io
Fluxuri de intrare
BufferedInputStream |
cite[te datele dintr-un buffer |
ByteArrayInputStream |
cite[te octe]ii de date īntr-o matrice de octe]i |
DataInputStream |
cite[te dintr-un flux de intrare obiecte, nu [iruri de octe]i |
FileInputStream |
cite[te date dintr-un fi[ier |
FilterInputStream | |
InputStream | |
LineNumberInputStream | |
PipedInputStream | |
PushBackInputStream | |
SequenceInputStream | |
StringBufferInputStream |
A. Metode care func]ioneaz\ cu toate fluxurile de intrare :
read() - cite[te date dintr-un flux de intrare
skip() - ignor\ unele date din fluxul de intrare
markAvailable() - testeaz\ dac\ metoda mark() este disponibil\ pentru fluxul de intrare respectiv
close() - īnchide un flux de intrare
B. Metode a c\ror func]ionare nu este garantat\ pentru toate fluxurile de intrare :
available() - determin\ cantitatea de date disponibile īntr-un flux de intrare
mark() - marcheaz\ īn fluxul de intrare un punct la care se poate reveni ulterior
reset() - revine la un punct dpecificat īn fluxul de intrare
Read
int read ();
int read (byte[] buffer)
int read (byte[] buffer, int offset, int length)
Skip
long skip (long numar_octeti)
Exemplu:
public long skipRecords(int num)
catch (IOException e)
return (retCode);
Close - īnchide un flux de intrare (Java īnchide automat fluxurile la terminarea aplica]iei)
void close();
Exemplu:
public long closeStream()
Available - determin\ dac\ o anumit\ cantitate de date poate fi citit\ f\r\ blocarea fluxului de intrare.
int available()
Returneaz\ nr. de octe]i ce pot fi citi]i din fluxul de intrare f\r\ blocare.
Exemplu:
public boolean isRecordReady()
catch (IOException e)
return ret;
Fluxuri de ie[ire
Clase pentru fluxuri de ie[ire :
FileOuputStream
BufferedOutputStream
ByteArrayOutputStream
DataOutputStream
FilterOutputStream
OutputStream
PipedOutputStream
PrintStream
Metode pentru fluxurile de ie[ire
write() - scrie date īntr-un flux de ie[ire
flush() - for]eaz\ scrierea datelor īntr-un canal de redirectare
close() - īnchide un flux de ie[ire
Write
int write ();
int write (byte[] buffer)
int write (byte[] buffer, int offset, int length)
Flush - for]eaz\ scrierea c\tre dispozitivul de ie[ire a datelor stocate īn zona tampon pentru un flux de ie[ire.
void flush();
Close - īnchide un flux de ie[ire (Java īnchide automat fluxurile la terminarea aplica]iei)
void close();
RECOMANDARE: Operatiile read/write se recomand\ a fi f\cute īn fire de execu]ie separate care s\ nu blocheze programul.
import java.io.*;
public class TestFlux
catch (IOException e)
} //while
}//try
catch (IOException e)
}//try
catch (FileNotFoundException e)
}//main
}//class
|