MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Buferele pentru fluxurile de caractere: BufferedReader și BufferedWriter

Scrierea textului cu BufferedWriter

Clasa BufferedWriter scrie textul într-un flux, bufând caracterele înainte de a le scrie efectiv pe suportul fizic. Aceasta reduce numărul de accesări directe ale suportului pentru scrierea datelor.

Clasa BufferedWriter are următorii constructori:

BufferedWriter(Writer out)  
BufferedWriter(Writer out, int sz)

Primul parametru este un flux de ieșire în care se face scrierea, iar al doilea parametru specifică dimensiunea bufferului.

Exemplu de scriere într-un fișier:

import java.io.*;

public class Program {

   public static void main(String[] args) {

       try (BufferedWriter bw = new BufferedWriter(new FileWriter("notes4.txt"))) {
           String text = "Hello  World!\nHey! Teachers! Leave the kids alone.";
           bw.write(text);
       } catch (IOException ex) {
           System.out.println(ex.getMessage());
       }
   }
}

Citirea textului cu BufferedReader

Clasa BufferedReader citește text dintr-un flux de caractere de intrare, bufând caracterele citite. Utilizarea bufferului este destinată creșterii performanței în citirea datelor din flux.

Clasa BufferedReader are următorii constructori:

BufferedReader(Reader in)  
BufferedReader(Reader in, int sz)

Al doilea constructor permite specificarea dimensiunii bufferului. Pe lângă metodele moștenite din clasa Reader, BufferedReader are o metodă proprie, readLine(), care permite citirea pe rânduri.

Exemplu de utilizare a BufferedReader:

import java.io.*;

public class Program {

   public static void main(String[] args) {

       try (BufferedReader br = new BufferedReader(new FileReader("notes4.txt"))) {
           // citire caracter cu caracter
           int c;
           while ((c = br.read()) != -1) {
               System.out.print((char) c);
           }
       } catch (IOException ex) {
           System.out.println(ex.getMessage());
       }
   }
}

De asemenea, putem citi textul rând cu rând:

try (BufferedReader br = new BufferedReader(new FileReader("notes4.txt"))) {
   // citire rând cu rând
   String s;
   while ((s = br.readLine()) != null) {
       System.out.println(s);
   }
} catch (IOException ex) {
   System.out.println(ex.getMessage());
}

Citirea de la consolă și scrierea în fișier

Putem combina clasele BufferedReader și BufferedWriter pentru a citi date din consolă și a le scrie într-un fișier. Codul următor ilustrează această funcționalitate:

import java.io.*;

public class Program {

   public static void main(String[] args) {

       try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new FileWriter("notes5.txt"))) {
           // citire rând cu rând
           String text;
           while (!(text = br.readLine()).equals("ESC")) {
               bw.write(text + "\n");
               bw.flush();
           }
       } catch (IOException ex) {
           System.out.println(ex.getMessage());
       }
   }
}

În acest exemplu, BufferedReader este folosit pentru a citi de la consolă cu ajutorul obiectului InputStreamReader(System.in). Într-un ciclu while, textul introdus de utilizator este citit rând cu rând. Până când utilizatorul introduce șirul "ESC", BufferedWriter va scrie textul în fișier.

← Lecția anterioară Lecția următoare →