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
iBufferedWriter
. - 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
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 unFileReader
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 elBufferedReader
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
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 unFileWriter
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 elBufferedWriter
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
iBufferedWriter
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
- 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