Scrigroup - Documente si articole

     

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


Intrari/Iesiri in Java

java



+ Font mai mare | - Font mai mic



Intrari/Iesiri in Java



In limbajul Java operatiile de intrare/iesire utilizeaza fluxuri (stream-uri). In general, un flux este un obiect care poate sa produca sau sa primeasca octeti. Clasele care descriu operatiile de intrare/iesire se afla in biblioteca java.io. Ele formeaza ierarhii determinate de specificul fluxului de intrare sau iesire, fluxuri de octeti sau de caractere. Spre exemplu, clasele InputStream si OutputStream sunt specializate in manevrarea fluxurilor de octeti iar clasele Reader si Writer lucreaza la nivel de caracter.

Cu o singura exceptie, toate clasele implementeaza doar operatii de scriere sau operatii de citire. Exceptia o constitue clasa RandomAccessFile care are atat metode de scriere cat si metode de citire.

1 Intrari/Iesiri la nivel de octet

Clasele InputStream si OutputStream sunt abstracte. Ele se extind pentru a obtine cateva tipuri utile de fluxuri. In aceste clase nu se face referire la tipul fluxului. Astfel se pot face citiri dintr-un fisier sau vector, din retea. Modul diferit in care se specifica sursa de octeti determina diferitele clase care extind clasa InputStream. Acelasi lucru se poate spune despre clasa OutputStream si ierarhia dezvoltata din aceasta.

Clasele FileInputStream si FileOutputStream se refera la lucrul cu fisiere. Clasele ByteArrayInputStream si ByteArrayOutputStream citesc/scriu in/dintr-un vector. Alte doua perechi de clase sun BufferedInputStream si BufferedOutputStream care folosesc fiecare cate o zona tampon care optimizeaza operatiile de intrari/iesiri. Daca se doreste sa se citeasca sau sa se scrie date din tipurile primitive ex. byte, int, float, double, se vor folosi clasele DataInputStream si DataOutputStream.

Toate metodele din clasele InputStream si OutputStream sunt declarate cu throws IOException (deci genereaza exceptia generala de intrare/iesire). Aceasta declaratie este prezenta si in clasele derivate.

Urmatorul program face citirea si scrierea la nivel de octet, din/in fisiere text.

import java.io.*;

public class FileCopy

catch (IOException e)

}

}

}

Functiile read() si write() lucreaza cu date de tip int stiindu-se faptul ca, caracterele dintr-un fisier text sunt in codul Unicode (pe doi octeti).

Urmatorul program exemplifica operatii de scriere si citire cu fluxuri ce utilizeaza vectori (in cazul de fata vectori cu elemente de tip byte).

import java.io.*;

public class Copy

catch(IOException e)

}

public static void main (Stringas args)

;

byte sursa2as=;

ByteArrayInputStream fluxIn1=new ByteArrayInputStream(sursa1);

ByteArrayInputStream fluxIn2=new ByteArrayInputStream(sursa2);

ByteArrayOutputStream fluxOut=new ByteArrayOutputStream();

copy(fluxIn1,fluxIn2,fluxOut);

System.out.println('Flux-ul iesire este este : '+fluxOut);

}

}

In cazul cand se lucreaza cu fluxuri la nivel de octet, deobicei nu se foloseste un singur flux ci mai multe fluxuri suprapuse,

BufferedInputStream br = new BufferedInputStream(new System.in);

Programul urmator exemplifica acest aspect. Concateneaza mai multe fisiere. Intrarea este o secventa de fluxuri (fisiere), cu zona tampon, precizate in linia de comanda. Iesirea este tot fisier cu zona tampon.

import java.io.*;

import java.util.*;

public class ConcFis

try

rez.close();

intrare.close();

}catch(IOException e)

}

}

2 Intrari/Iesiri la nivel de caracter

Clasele Reader si Writer sunt si ele abstracte si stau la baza unei ierarhii de clase pentru intrari/iesiri la nivel de caracter. Pe langa aceasta, cele doua clase permit sincronizarea operatiilor asupra fluxurilor derivate. Aceasta prin intermediul unei instante Object membra in aceste doua clase. Clasele InputStreamReader si OutputStreamWriter realizeaza o punte intre fluxurile de caractere si cele de octeti. Ele citesc/scriu caractere traducandu-le in octeti.

Programul urmator realizeaza copia unui fisier. Citirile-scrierile se fac la nivel de caracter sau linie. Se folosesc fluxuri suprapuse care in final poseda zona tampon.

import java.io.*;

public class CopyFile2

bw.close();

}catch (IOException e);

}

public static void main (Stringas args)

}

2 Intrari/Iesiri la nivel de caracter

Clasele DataInputStream si DataOutputStream ofera posibilitatea sa se transfere prin fluxuri date primare precum boolean, char, int, float, etc. Utilizand metodele acestor clase, informatia este transferata intr-un format independent de sistem. Totusi, pentru ca datele sa fie citite cu DataInputStream trebuie sa fi fost scrise cu DataOutputStream.

Programul urmator exemplifica citirea/scrierea datelor primitive de tipuri diferite.

/**

Fluxuri de date si fisiere. Fisierul (fluxul) de intrare poate fi

si tastatura. Se citesc si se scriu in fisierul (fluxul) de iesire

nr_intregi,nr_flotanti si intregii, respectiv flotantii corespunzatori.

*/

import java.io.*;

public class FluxDate

tryelse

fluxIntrareDate=new DataInputStream(fluxIntrare);

int nrInt=fluxIntrareDate.readInt(),nrFloat=fluxIntrareDate.readInt();

fluxIesireDate.writeInt(nrInt);

fluxIesireDate.writeInt(nrFloat);

int i,cit;

for(i=0;i<nrInt;i++)

float a;

for(i=0;i<nrFloat;i++)

fluxIntrare.close();

fluxIesire.close();

}catch (IOException e)

}

}



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 909
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