Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
This is an old revision of the document!
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.
Acest API se folosește de 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.
Acest API este livrat deja compilat sub formă de fișier JAR. Importarea unui astfel de proiect este explicata în acest tutorial.
FileReader este clasa care manipulează operațiile de citire dintr-un fișier. Numele fișierului este pasat drept parametru către constructor.
String filename = "input.txt"; FileReader fileReader = new FileReader(filename);
FileReader conține metode de citire a tipurilor de date primitive din java: nextChar, nextBool, nextInt, nextLong, nextFloat si nextDouble. Exemplu de folosire a metodelor next*
4 3.14 true
int integerNumber; float floatingNumber; boolean boolVariable; integerNumber = fileReader.nextInt(); floatingNumber = fileReader.nextFloat(); boolVariable = fileReader.nextBool(); System.out.println(String.format("%d %f %b", integerNumber, floatingNumber, boolVariable));
În urma rulării codului de mai sus, se va afișa “4 3.14 true”.
De asemenea, API-ul oferă și metodă de nextWord care are drept scop citirea unui string pană la întâlnirea primului spațiu. Exemplu de folosire a metodei nextWord
apples pears
String firstWord, secondWord; firstWord = fileReader.nextWord(); secondWord = fileReader.nextWord(); System.out.println(String.format("%s, %s", firstWord, secondWord));
În urma rulării codului de mai sus, se va afișa “apples, pears”.
După terminarea operației de citire din fișier, fișierul de citire trebuie închis folosind metoda close().
FileWriter este clasa care manipulează operațiile de scriere într-un fișier. Numele fișierului este pasat drept parametru către constructor.
String filename = "output.txt"; FileWriter fileWriter = new FileWriter(filename);
FileWriter conține metode de write*, complementare cu metodele next* din FileReader. Metoda writeNewLine() trece pe o linie noua în fișier.
Exemplu de folosire a metodelor write*
int number = 3; float pi = 3.14; String word = "apples"; fileWriter.writeInt(number); fileWriter.writeNewLine(); fileWriter.writeWord(word); fileWriter.writeFloat(pi);
În urma rulării codului de mai sus, fișierul de output va fi următorul:
3 apples3.14
După terminarea operației de scriere în fișier, fișierul de scriere trebuie închis folosind metoda close().
Î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.
String input= "input.txt", output = "output.txt"; FileSystem fileSystem = new FileSystem(input, output);
Această abstractizare reunește metodele de tip next* pentru citire, respectiv write* pentru scriere ale claselor FileReader și FileWriter. Exemplu de folosire a metodelor next* și write*
int number = fileSystem.nextInt(); fileSystem.writeInt(number);
În urma rulării codului de mai sus, se va citi un întreg din fișierul de input și va fi scris în fișierul de output.
După terminarea operațiilor de citire, respectiv scriere, ambele fișiere trebuie închise folosind metoda close().