En aquest tema, aprendrem com llegir fitxers en Java utilitzant diverses classes i mètodes proporcionats per la biblioteca estàndard de Java. La lectura de fitxers és una operació comuna en moltes aplicacions, ja que permet obtenir dades des d'arxius externs per processar-les o analitzar-les.
Objectius
- Comprendre com utilitzar la classe
FileReader
per llegir fitxers de text. - Aprendre a utilitzar la classe
BufferedReader
per millorar l'eficiència de la lectura de fitxers. - Gestionar excepcions relacionades amb la lectura de fitxers.
- Utilitzant
FileReader
FileReader
La classe FileReader
és una classe simple que permet llegir caràcters d'un fitxer. Aquí teniu un exemple bàsic de com utilitzar FileReader
per llegir un fitxer de text.
Exemple
import java.io.FileReader; import java.io.IOException; public class FileReaderExample { public static void main(String[] args) { try { FileReader reader = new FileReader("example.txt"); int character; while ((character = reader.read()) != -1) { System.out.print((char) character); } reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
Explicació
- Importació de classes: Importem
FileReader
iIOException
de la bibliotecajava.io
. - Creació de
FileReader
: Creem una instància deFileReader
passant el nom del fitxer que volem llegir. - Lectura de caràcters: Utilitzem el mètode
read()
per llegir caràcter a caràcter fins que arribem al final del fitxer (indicat per-1
). - Tancament del fitxer: Tanquem el fitxer utilitzant el mètode
close()
per alliberar els recursos.
- Utilitzant
BufferedReader
BufferedReader
La classe BufferedReader
s'utilitza per millorar l'eficiència de la lectura de fitxers, ja que llegeix blocs de caràcters en lloc de caràcter a caràcter. Això pot ser especialment útil per a fitxers grans.
Exemple
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class BufferedReaderExample { public static void main(String[] args) { try { BufferedReader reader = new BufferedReader(new FileReader("example.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
Explicació
- Creació de
BufferedReader
: Creem una instància deBufferedReader
passant una instància deFileReader
. - Lectura de línies: Utilitzem el mètode
readLine()
per llegir línia a línia fins que arribem al final del fitxer (indicat pernull
). - Tancament del fitxer: Tanquem el fitxer utilitzant el mètode
close()
.
- Gestió d'Excepcions
Quan treballem amb fitxers, és important gestionar les possibles excepcions que poden ocórrer, com ara fitxers que no existeixen o problemes de lectura/escriptura. En els exemples anteriors, utilitzem un bloc try-catch
per capturar i gestionar IOException
.
Exemple amb gestió d'excepcions
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ExceptionHandlingExample { public static void main(String[] args) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("example.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("Error llegint el fitxer: " + e.getMessage()); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { System.err.println("Error tancant el fitxer: " + e.getMessage()); } } } }
Explicació
- Blocs
try-catch-finally
: Utilitzem un bloctry-catch-finally
per assegurar-nos que el fitxer es tanca correctament fins i tot si es produeix una excepció. - Gestió d'excepcions: Capturem
IOException
i imprimim un missatge d'error.
Exercicis Pràctics
Exercici 1
Crea un programa que llegeixi un fitxer de text i compti el nombre de línies que conté.
Solució
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class LineCountExample { public static void main(String[] args) { int lineCount = 0; try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { while (reader.readLine() != null) { lineCount++; } } catch (IOException e) { e.printStackTrace(); } System.out.println("Nombre de línies: " + lineCount); } }
Exercici 2
Crea un programa que llegeixi un fitxer de text i compti el nombre de paraules que conté.
Solució
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class WordCountExample { public static void main(String[] args) { int wordCount = 0; try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) { String line; while ((line = reader.readLine()) != null) { String[] words = line.split("\\s+"); wordCount += words.length; } } catch (IOException e) { e.printStackTrace(); } System.out.println("Nombre de paraules: " + wordCount); } }
Resum
En aquest tema, hem après com llegir fitxers en Java utilitzant les classes FileReader
i BufferedReader
. També hem vist com gestionar excepcions relacionades amb la lectura de fitxers. A més, hem practicat amb exercicis per comptar línies i paraules en un fitxer de text. En el proper tema, explorarem com escriure fitxers 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