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
BufferedReaderiBufferedWriter. - Aprendre a utilitzar
BufferedReaderper llegir dades d'un fitxer. - Aprendre a utilitzar
BufferedWriterper 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
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ó:
BufferedReaderes crea amb unFileReaderque 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-resourcesassegura que elBufferedReaderes 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
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ó:
BufferedWriteres crea amb unFileWriterque 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-resourcesassegura que elBufferedWriteres 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-resourcesper 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
BufferedReaderiBufferedWriterper 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
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
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
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection
