CATEGORII DOCUMENTE |
Informatia poate fi preluata de oriunde (fisier, disk, retea, memorie, alt program) si poate fi de orice tip (obiecte, caractere, imagini, sunete).
Pentru a aduce informatii, un program Java deschide un flux (canal de comunicatii) la o sursa de informatii si citeste informatia. Un flux care citeste date se numeste flux de intrare.
Similar, un program poate trimite informatii catre o destinatie externa deschizand un flux (canal de comunicatii) catre acea destinatie si scriind serial informatiile respective. Un flux care scrie date se numeste flux de iesire.
Algoritmul de citire este:
deschide flux
cat timp exista informatie
citeste informatia
inchide flux
Algoritmul de afisare este:
deschide flux
cat timp exista informatie
scrie informatia
inchide flux
Pachetul java.io contine o colectie de clase folosite pentru citiri si afisari. Prin urmare, orice program care necesita operatii de intrare / iesire trebuie sa importe pachetul java.io:
import java.io.*
.
Exista trei tipuri de clasificare a fluxurilor:
Dupa 'directia' canalului de comunicatie deschis, fluxurile se impart in:
o fluxuri de intrare (pentru citirea datelor)
o fluxuri de iesire (pentru scrierea datelor)
Dupa tipul de date pe care opereaza:
o fluxuri de octeti (comunicarea seriala se realizeaza pe 8 biti)
o fluxuri de caractere (comunicarea seriala se realizeaza pe 16 biti)
Dupa actiunea lor:
o fluxuri pentru citirea / scrierea datelor
o fluxuri pentru procesarea datelor
Clasele radacina pentru ierarhia claselor ce se ocupa cu fluxurile de caractere sunt Reader (pentru fluxuri de intrare) si Writer (pentru fluxuri de iesire).
Ierarhia claselor pentru fluxuri de intrare pe caractere este:
Ierarhia claselor pentru fluxuri de iesire pe caractere este:
Clasele radacina pentru ierarhia claselor ce se ocupa cu fluxurile de octeti sunt InputStream (pentru fluxuri de intrare) si OutputStream (pentru fluxuri de iesire). Subclasele lor sunt folosite pentru citiri si scrieri de date binare cum ar fi imagini si sunete.
Ierarhia claselor pentru fluxuri de intrare pe octeti:
Ierarhia claselor pentru fluxuri de iesire pe octeti:
Clasele Reader si InputStream definesc metode similare pentru citirea datelor, tipul parametrilor variind.
Clasa Reader
int read()
int read(char cbuf[ ])
int read(char cbuf[ ], int index, int lungime)
Clasa InputStream
int read()
int read(byte cbuf[ ])
int read(byte cbuf[ ], int index, int lungime)
Analog, clasele Writer si OutputStream definesc metode similare pentru afisarea datelor, tipul parametrilor variind.
Clasa Writer
int write()
int write(char cbuf[ ])
int write(char cbuf[ ], int index, int lungime)
Clasa OutputStream
int write()
int write(byte cbuf[ ])
int write(byte cbuf[ ], int index, int lungime)
Orice flux este un obiect al clasei ce implementeaza fluxul respectiv. Crearea unui flux se realizeaza similar cu crearea obiectelor, prin instructiunea new().
Exemple:
//crearea unui flux de intrare pe caractere
FileReader in = new FileReader('fisier_intrare.txt');
//crearea unui flux de iesire pe caractere
FileWriter out = new FileWriter('fisier_iesire.txt');
//crearea unui flux de intrare pe octeti
FileInputStream in = new FileInputStream('fisier_intrare.txt');
//crearea unui flux de iesire pe octeti
FileOutputStrem out = new FileOutputStream('fisier_iesire.txt');
Prin urmare, crearea unui flux de date care scrie / citeste informatii de la un dispozitiv extern are formatul general:
FluxPrimitiv numeFlux = new FluxPrimitiv (dispozitiv extern)
In general, tastatura reprezinta perifericul standard pentru introducerea datelor. Clasa System contine o variabila membru care reprezinta tastatura sau fluxul de intrare standard. Aceasta variabila membru se numeste in si este o instanta a clasei InputStream.
Exemplu 1: Se citesc de la tastatura caractere. Fiecare caracter citit se adauga la un sir de caractere. Citirea se incheie cand se apasa tasta Enter.
1. class Citire1
9. catch(Exception e)
12. System.out.println('Sirul este:'+s);
13. }
14. }
Exemplu 2: Se citesc de la tastatura caractere. Ele sunt memorate intr-un vector de bytes (linia 5). Citirea se incheie cand se apasa tasta Enter. Pe baza vectorului se formeaza un String (linia 10) care este afisat.
1. class Citire2
7. catch(Exception e)
10. String s=new String(buf);
11. System.out.println(s);
12. }
13. }
Reprezinta legatura dintre fluxurile de octeti si fluxurile de caractere: citeste octeti si ii transforma in caractere. Transformarea octetilor in caractere este efectuata conform unei reguli de codificare. Daca nu se specifica o astfel de regula, atunci se utilizeaza codificarea implicita (data de proprietatea de sistem "file encoding").
Clasa InputStreamReader are urmatorii constructori:
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String enc)
Metoda principala pentru citirea unui caracter este:
int read()
Exemplu 3: Se citesc de la tastatura caractere. Fiecare caracter citit se adauga la un sir de caractere. Citirea se incheie cand se apasa tasta Enter.
1. import java.io.*;
2. class Citire3
12. catch(Exception e)
15. System.out.println(s);
16. }
17. }
In cazul folosirii clasei InputStreamReader, citirea se face caracter cu caracter (adica, discul este accesat de fiecare data). Pentru a creste eficienta se foloseste un flux care utilizeaza o zona tampon pentru citire (BufferedReader). Clasa BufferedReader are definita metoda read() cu aceeasi signatura ca si cea definita in InputStreamReader dar, in plus, defineste si metoda readLine(). Aceasta metoda poate fi folosita pentru a citi un sir de caractere terminat cu 'n','r' sau 'rn'.
Exemplu 4: Se introduce un sir de caractere de la tastatura. La apasarea tastei Enter sirul este citit in intregime si este depus intr-un String.
1. import java.io.*;
2. class Citire4
10. catch(Exception e)
13. System.out.println(s);
14. }
15. }
Clasa FileReader este folosita la citirea datelor dintr-un fisier text. Cei mai importanti constructori ai sai sunt:
creeaza un flux care citeste caractere din fisierul nume
public FileReader(String nume) throws
FileNotFoundException
creeaza un flux care citeste caractere din fisierul varFis.
public FileReader(File varFis) throws
FileNotFoundException
Clasa FileWriter este folosita la scrierea datelor intr-un fisier text. Cei mai importanti constructori ai sai sunt:
creeaza un flux care scrie caractere in fisierul nume
public FileWriter (String nume) throws IOException
creeaza un flux care citeste caractere din fisierul varFis
public FileWriter (File varFis) throws IOException
Exemplu 5: Citeste caracter cu caracter un fisier in linia 8. Cand valoarea caracterului citit este -1 inseamna ca s-a ajuns la sfarsitul fisierului. Caracterele sunt adaugate la un sir de caractere in linia 9, care la sfarsit este afisat.
1. import java.io.*;
2. public class CitireFis
11. catch(Exception e)
14. System.out.println(s);
15. }
16. }
Exemplu 6: Copiaza continutul unui fisier in alt fisier.
1. import java.io.*;
2. public class CitireFis
13. catch (IOException e)
16. }
17. }
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1556
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved