User Tools

Site Tools


Problem constructing authldap
laboratoare:tutorial-io
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:tutorial-io [2017/09/26 14:47]
Mihai Burduselu [Importarea API-ului]
laboratoare:tutorial-io [2017/10/01 22:07] (current)
Adriana Draghici [Tutorial I/O]
Line 1: Line 1:
 = Tutorial I/O = = Tutorial I/O =
  
-* Responsabil: ​todo +* Responsabil: ​[[michelcatalin@gmail.com|Mihai Burdușelu]] 
-* Data publicării: ​todo +* Data publicării: ​01.10.2017 
-* Data ultimei modificări: ​todo+* Data ultimei modificări: ​28.09.2017
  
 ==Obiective== ==Obiective==
 Scopul acestui tutorial este de a vă familiariza cu API-ul pus la dispoziție pentru citirea și scrierea în fișier. În cadrul laboratoarelor și temelor puteți importa acest API sau puteți sa folosiți o implementare proprie. Scopul acestui tutorial este de a vă familiariza cu API-ul pus la dispoziție pentru citirea și scrierea în fișier. În cadrul laboratoarelor și temelor puteți importa acest API sau puteți sa folosiți o implementare proprie.
 +
 +==Introducere==
 +Acest API se folosește de [[http://​docs.oracle.com/​javase/​8/​docs/​api/?​java/​io/​FileReader.html|java.io.FileReader]] pentru a crea un flux de intrare de caractere.
 +
 +[[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​io/​BufferedReader.html|BufferedReader]] este responsabil cu preluarea datelor de la un flux primitiv (''​FileReader''​) și procesarea acestora pentru a le oferi într-o altă formă. Patternul //​Decorator//​ este aplicat aici, intrucat ''​BufferedReader''​ este un wrapper peste ''​FileReader''​.
 +De asemenea, [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​io/​FileWriter.html|java.io.FileWriter]] este responsabil pentru crearea unui flux de ieșire de caractere, în vreme ce [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​io/​BufferedWriter.html|BufferedWriter]] este un wrapper peste acesta.
 +
 +''​BufferedReader''​ are calitatea de a "​buffera"​ fluxul de date. Astfel, această metodă de citire este mai eficientă decât folosirea directă a unui ''​FileReader''​.
 +
 ==Importarea API-ului== ==Importarea API-ului==
 Acest API este livrat deja compilat sub formă de fișier JAR. Acest API este livrat deja compilat sub formă de fișier JAR.
-Importarea unui astfel de proiect este explicata în acest [[laboratoare/importare-fisiere-jar|tutorial]].+Importarea unui astfel de proiect este explicata în acest [[laboratoare:importare-fisiere-jar|tutorial]].
 ==Citirea dintr-un fișier text== ==Citirea dintr-un fișier text==
 FileReader este clasa care manipulează operațiile de citire dintr-un fișier. Numele fișierului este pasat drept parametru către constructor. FileReader este clasa care manipulează operațiile de citire dintr-un fișier. Numele fișierului este pasat drept parametru către constructor.
 <​note>​ <​note>​
 Deschiderea fișierului se face în momentul instanțierii obiectului. Deschiderea fișierului se face în momentul instanțierii obiectului.
-Dacă fișierul nu se afla pe disc, API-ul va arunca FileNotFoundException.+Dacă fișierul nu se află pe disc, API-ul va arunca FileNotFoundException.
 </​note>​ </​note>​
 ===Instanțierea unui obiect al clasei FileReader=== ===Instanțierea unui obiect al clasei FileReader===
Line 21: Line 30:
 FileReader fileReader = new FileReader(filename);​ FileReader fileReader = new FileReader(filename);​
 </​code>​ </​code>​
-===Citirea tipurilor de date primitive din java=== +===Citirea tipurilor de date primitive din Java=== 
-FileReader conține metode de citire a tipurilor de date primitive din java: nextChar, nextBool, ​ nextInt, nextLong, nextFloat ​si nextDouble.+FileReader conține metode de citire a tipurilor de date primitive din Java''​nextChar''​''​nextBool''​,  ​''​nextInt''​''​nextLong''​''​nextFloat''​ și ''​nextDouble''​.
 Exemplu de folosire a metodelor **next*** Exemplu de folosire a metodelor **next***
 <code text input.txt>​ <code text input.txt>​
Line 41: Line 50:
 În urma rulării codului de mai sus, se va afișa "//4 3.14 true//"​. În urma rulării codului de mai sus, se va afișa "//4 3.14 true//"​.
  
-===Citirea stringurilor delimitate de spatii=== +===Citirea stringurilor delimitate de spații=== 
-De asemenea, API-ul oferă și metodă de nextWord care are drept scop citirea unui string pană la întâlnirea primului spațiu.+De asemenea, API-ul oferă și metoda ''​nextWord'' ​care are drept scop citirea unui string pană la întâlnirea primului spațiu.
 Exemplu de folosire a metodei **nextWord** Exemplu de folosire a metodei **nextWord**
 <code text input.txt>​ <code text input.txt>​
Line 63: Line 72:
  
 ===Închiderea fișierului=== ===Închiderea fișierului===
-După terminarea operației de citire din fișier, fișierul de citire trebuie închis folosind metoda ​**close()**.+După terminarea operației de citire din fișier, fișierul de citire trebuie închis folosind metoda ​''​close()''​.
  
 ==Scrierea în fișier== ==Scrierea în fișier==
Line 80: Line 89:
 ===Scrierea principalelor tipuri de date din java=== ===Scrierea principalelor tipuri de date din java===
 FileWriter conține metode de **write***, complementare cu metodele **next*** din FileReader. FileWriter conține metode de **write***, complementare cu metodele **next*** din FileReader.
-Metoda ​**writeNewLine()** trece pe o linie noua în fișier.+Metoda ​''​writeNewLine()'' ​trece pe o linie nouă în fișier.
  
 Exemplu de folosire a metodelor **write*** Exemplu de folosire a metodelor **write***
Line 104: Line 113:
  
 ===Închiderea fișierului=== ===Închiderea fișierului===
-După terminarea operației de scriere în fișier, fișierul de scriere trebuie închis folosind metoda ​**close()**.+După terminarea operației de scriere în fișier, fișierul de scriere trebuie închis folosind metoda ​''​close()''​.
  
 ==Abstractizare pentru manipularea ambelor fluxuri de date== ==Abstractizare pentru manipularea ambelor fluxuri de date==
-În cazul în care programul are nevoie atât de citire dintr-un fișier denumit input, cât și de scriere într-altul denumit output, API-ul oferă o abstractizare numită FileSystem. +În cazul în care programul are nevoie atât de citire dintr-un fișier denumit input, cât și de scriere într-altul denumit output, API-ul oferă o abstractizare numită ​''​FileSystem''​
-Cele 2 fișiere (input și output) sunt pasate ​drept parametri către constructor.+Cele 2 fișiere (input și output) sunt date drept parametri către constructor.
  
 ===Instanțierea unui obiect al clasei FileSystem=== ===Instanțierea unui obiect al clasei FileSystem===
Line 127: Line 136:
 ===Închiderea fișierelor=== ===Închiderea fișierelor===
 După terminarea operațiilor de citire, respectiv scriere, ambele fișiere trebuie închise folosind metoda **close()**. După terminarea operațiilor de citire, respectiv scriere, ambele fișiere trebuie închise folosind metoda **close()**.
 +
 +==Alte modalități de a manipula fluxurile intrare-ieșire==
 +  * [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​RandomAccessFile.html|RandomAccessFile]]
 +
  
 ==Resurse== ==Resurse==
 +  * [[https://​docs.oracle.com/​javase/​tutorial/​essential/​io/​|Basic I/O]]
   * {{laboratoare:​tutorial-io:​fileio.zip|FileIO}}   * {{laboratoare:​tutorial-io:​fileio.zip|FileIO}}
   * {{laboratoare:​tutorial-io:​fileio_jar.zip|FileIO JAR}}   * {{laboratoare:​tutorial-io:​fileio_jar.zip|FileIO JAR}}
laboratoare/tutorial-io.1506426462.txt.gz · Last modified: 2017/09/26 14:47 by Mihai Burduselu