Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  

CATEGORII DOCUMENTE





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







DOCUMENTE SIMILARE

Trimite pe Messenger
TIPURI DE VARIABILE
IESIREA FORTATA DIN CICLURI
DISTRUGEREA CONTEXTELOR GRAPHICS
EVENIMENTE ALE BARELOR DE SCROLL
CONTROLUL PRIN FIRE DE EXECUTIE
ARITMETICA SIRURILOR
DISPUNEREA COMPONENTELOR UNEI INTERFETE
METODE CONSTRUCTOR
Constructori
APELAREA METODEI ORIGINALE

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

DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 397
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 2019 . All rights reserved

Distribuie URL

Adauga cod HTML in site