Fluxurile Java pun la dispozitie modalitatea prin care doua sau mai multe procese pot comunica fara a avea informatii unul despre celalalt. Mai mult, prin fluxuri este posibila comunicarea intre doua sau mai multe fire de executie ale aceleiasi aplicatii. Fluxurile sunt secvente de octeti (8 biti).
Proces producator ? flux de iesire ? Proces consumator
Proces consumator ? flux de intrare ? Proces producator
- fluxurile sunt unidirectionale, de la producator la consumator
- fiecare flux are un singur proces producator si un singur proces consumator
- intre doua procese pot exista oricate fluxuri, orice proces putand fi atat producator si consumator in acelasi timp, dar pe fluxuri diferite
- consumatorul si producatorul nu comunica direct printr-o interfata de flux ci prin intermediul codului Java de tratare a fluxurilor
Importanta : ajuta la citirea scrierea informatiilor in dispozitive de intrare/iesire, fisiere, baze de date, etc.
Toate interfetele pentru fluxuri implementeaza un set de metode de baza, comune tuturor categoriilor de fluxuri. Metodele standard pentru lucrul cu fluxuri se gasesca in pachetul java.io.
Fluxuri de intrare
BufferedInputStream citeste datele dintr-un buffer
ByteArrayInputStream citeste octetii de date intr-o matrice de octeti
DataInputStream citeste dintr-un flux de intrare obiecte, nu siruri de octeti
FileInputStream citeste date dintr-un fisier
FilterInputStream
InputStream
LineNumberInputStream
PipedInputStream
PushBackInputStream
SequenceInputStream
StringBufferInputStream
A. Metode care functioneaza cu toate fluxurile de intrare :
- read() - citeste date dintr-un flux de intrare
- skip() - ignora unele date din fluxul de intrare
- markAvailable() - testeaza daca metoda mark() este disponibila pentru fluxul de intrare respectiv
- close() - inchide un flux de intrare
B. Metode a caror functionare nu este garantata pentru toate fluxurile de intrare :
- available() - determina cantitatea de date disponibile intr-un flux de intrare
- mark() - marcheaza in fluxul de intrare un punct la care se poate reveni ulterior
- reset() - revine la un punct dpecificat in fluxul de intrare
Read
int read ();
int read (bytest buffer)
int read (bytest buffer, int offset, int length)
Skip
long skip (long numar_octeti)
Exemplu:
public long skipRecords(int num) {
int recordSize = 512 ;
long retCode = 0 ;
try {
//sare peste num inregistrari
retCode = MyStream.skip(num * recordSize);
//calc nr. de inregistrari peste care a sarit
if retCode > 0 {
retCode /= recordSize ;
}
catch (IOException e) {
System.out.println.("Eroare de intrare/iesire!");
}
return (retCode);
}
Close - inchide un flux de intrare (Java inchide automat fluxurile la terminarea aplicatiei)
void close();
Exemplu:
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.