This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:tutorial-io [2017/09/28 19:12] Mihai Burduselu [Introducere] |
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== | ||
Line 9: | Line 9: | ||
==Introducere== | ==Introducere== | ||
- | Acest API se folosește de java.io.FileReader pentru a crea un flux de intrare de caractere. | + | 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. |
- | 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 java.io.FileReader. | + | |
- | De asemenea, java.io.FileWriter este responsabil pentru crearea unui flux de ieșire de caractere, în vreme ce 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 doar a unui FileReader. | + | [[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== | ||
Line 22: | Line 23: | ||
<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 29: | 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 49: | 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 71: | 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 88: | 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 112: | 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=== |