Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Intrari si iesiri JAVA

java



+ Font mai mare | - Font mai mic



1.     Intrari si iesiri



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.*.

1.1.   Clasificarea fluxurilor

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

1.2.   Ierarhia claselor pentru lucrul cu fluxuri

1.2.1.  Fluxuri de caractere

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:


1.2.2.  Fluxuri de octeti

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:


1.3.   Superclasele de intrare / iesire

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)

1.4.   Crearea unui flux

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)

1.5.   Citirea datelor de la tastatura

1.5.1.  Obiectul System.in

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.         }

1.5.2.  Clasa InputStreamReader

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.         }

1.5.3.  Clasa BufferedReader

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.         }

1.6.   Citirea si scrierea datelor din fisier

1.6.1.  Clasele FileReader si FileWriter

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1470
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved