En aquest tema, aprendrem sobre dues classes essencials per a la manipulació de fitxers en Java: BufferedReader i BufferedWriter. Aquestes classes s'utilitzen per a la lectura i escriptura de dades de manera eficient, ja que utilitzen un buffer intern per reduir el nombre d'operacions d'E/S (Entrada/Sortida) necessàries.

Objectius

  • Entendre què són BufferedReader i BufferedWriter.
  • Aprendre a utilitzar BufferedReader per llegir dades d'un fitxer.
  • Aprendre a utilitzar BufferedWriter per escriure dades en un fitxer.
  • Realitzar exercicis pràctics per consolidar els coneixements.

Què és BufferedReader?

BufferedReader és una classe que s'utilitza per llegir el text d'un flux d'entrada de caràcters de manera eficient. Llegeix caràcters, matrius de caràcters i línies. Utilitza un buffer intern per reduir el nombre d'operacions d'E/S, millorant així el rendiment.

Sintaxi Bàsica

BufferedReader br = new BufferedReader(new FileReader("nom_del_fitxer.txt"));

Exemple Pràctic

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ExempleBufferedReader {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("exemple.txt"))) {
            String linia;
            while ((linia = br.readLine()) != null) {
                System.out.println(linia);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explicació:

  • BufferedReader es crea amb un FileReader que apunta al fitxer "exemple.txt".
  • El mètode readLine() llegeix una línia de text a la vegada fins que arriba al final del fitxer (null).
  • El bloc try-with-resources assegura que el BufferedReader es tanca automàticament.

Què és BufferedWriter?

BufferedWriter és una classe que s'utilitza per escriure text en un flux de sortida de caràcters de manera eficient. Escriu caràcters, matrius de caràcters i cadenes. Utilitza un buffer intern per reduir el nombre d'operacions d'E/S, millorant així el rendiment.

Sintaxi Bàsica

BufferedWriter bw = new BufferedWriter(new FileWriter("nom_del_fitxer.txt"));

Exemple Pràctic

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class ExempleBufferedWriter {
    public static void main(String[] args) {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("exemple.txt"))) {
            bw.write("Aquesta és una línia de text.");
            bw.newLine(); // Escriu un salt de línia
            bw.write("Aquesta és una altra línia de text.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explicació:

  • BufferedWriter es crea amb un FileWriter que apunta al fitxer "exemple.txt".
  • El mètode write() escriu una cadena de text al fitxer.
  • El mètode newLine() escriu un salt de línia.
  • El bloc try-with-resources assegura que el BufferedWriter es tanca automàticament.

Exercicis Pràctics

Exercici 1: Lectura de Fitxer

Llegeix el contingut d'un fitxer anomenat "entrada.txt" i mostra'l per pantalla.

Solució:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class LecturaFitxer {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("entrada.txt"))) {
            String linia;
            while ((linia = br.readLine()) != null) {
                System.out.println(linia);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Exercici 2: Escriptura de Fitxer

Escriu diverses línies de text en un fitxer anomenat "sortida.txt".

Solució:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class EscripturaFitxer {
    public static void main(String[] args) {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("sortida.txt"))) {
            bw.write("Primera línia de text.");
            bw.newLine();
            bw.write("Segona línia de text.");
            bw.newLine();
            bw.write("Tercera línia de text.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Errors Comuns i Consells

  • No tancar els fluxos: Assegura't de tancar sempre els fluxos d'entrada i sortida per evitar fuites de memòria. Utilitza el bloc try-with-resources per gestionar automàticament el tancament.
  • Gestió d'excepcions: Sempre gestiona les excepcions d'E/S per evitar que l'aplicació es bloquegi en cas d'error.
  • Buffering adequat: Utilitza BufferedReader i BufferedWriter per a operacions d'E/S de text per millorar el rendiment.

Conclusió

En aquest tema, hem après a utilitzar BufferedReader i BufferedWriter per a la lectura i escriptura eficient de fitxers en Java. Hem vist exemples pràctics i hem realitzat exercicis per consolidar els coneixements. Ara estem preparats per avançar cap a temes més complexos relacionats amb la manipulació de fitxers i fluxos en Java.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats