En aquest tema, aprendrem com escriure dades a fitxers utilitzant Java. La capacitat d'escriure dades a fitxers és essencial per a moltes aplicacions, ja que permet emmagatzemar informació de manera persistent.
Conceptes Clau
- Fluxos de Sortida (Output Streams): Són utilitzats per escriure dades a fitxers.
- Classes Principals:
FileWriter
BufferedWriter
PrintWriter
- Gestió d'Excepcions: És important gestionar les possibles excepcions que poden ocórrer durant l'escriptura de fitxers.
Classes i Mètodes
FileWriter
FileWriter
és una classe que permet escriure caràcters a un fitxer. És una de les maneres més senzilles d'escriure dades a un fitxer en Java.
Exemple:
import java.io.FileWriter; import java.io.IOException; public class FileWriterExample { public static void main(String[] args) { try { FileWriter writer = new FileWriter("example.txt"); writer.write("Hola, món!"); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }
BufferedWriter
BufferedWriter
proporciona una manera més eficient d'escriure caràcters a un fitxer, ja que utilitza un buffer intern per reduir el nombre d'operacions d'escriptura.
Exemple:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class BufferedWriterExample { public static void main(String[] args) { try { FileWriter writer = new FileWriter("example.txt"); BufferedWriter bufferedWriter = new BufferedWriter(writer); bufferedWriter.write("Hola, món!"); bufferedWriter.newLine(); bufferedWriter.write("Aquesta és una segona línia."); bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
PrintWriter
PrintWriter
és una classe que proporciona mètodes convenients per escriure dades formatades a un fitxer.
Exemple:
import java.io.PrintWriter; import java.io.IOException; public class PrintWriterExample { public static void main(String[] args) { try { PrintWriter writer = new PrintWriter("example.txt"); writer.println("Hola, món!"); writer.printf("Aquest és un número: %d", 42); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }
Exercicis Pràctics
Exercici 1: Escriure un Fitxer de Text
Objectiu: Escriure un programa que demani a l'usuari una línia de text i l'escrigui a un fitxer anomenat output.txt
.
Solució:
import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class WriteToFile { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Introdueix una línia de text:"); String input = scanner.nextLine(); try { FileWriter writer = new FileWriter("output.txt"); writer.write(input); writer.close(); System.out.println("Text escrit a output.txt"); } catch (IOException e) { e.printStackTrace(); } } }
Exercici 2: Escriure Múltiples Línies
Objectiu: Escriure un programa que demani a l'usuari diverses línies de text i les escrigui a un fitxer anomenat output.txt
. El programa ha de continuar demanant línies fins que l'usuari introdueixi una línia buida.
Solució:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class WriteMultipleLines { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); try { FileWriter writer = new FileWriter("output.txt"); BufferedWriter bufferedWriter = new BufferedWriter(writer); while (true) { System.out.println("Introdueix una línia de text (o deixa en blanc per acabar):"); String input = scanner.nextLine(); if (input.isEmpty()) { break; } bufferedWriter.write(input); bufferedWriter.newLine(); } bufferedWriter.close(); System.out.println("Text escrit a output.txt"); } catch (IOException e) { e.printStackTrace(); } } }
Errors Comuns i Consells
- No tancar el flux: Assegura't de tancar el flux (
close()
) per evitar pèrdues de dades. - Gestió d'excepcions: Sempre gestiona les possibles excepcions (
IOException
) per evitar que el programa es bloquegi. - Ús de
BufferedWriter
: UtilitzaBufferedWriter
per millorar l'eficiència quan escriguis grans quantitats de dades.
Resum
En aquest tema, hem après com escriure dades a fitxers utilitzant diverses classes de Java com FileWriter
, BufferedWriter
i PrintWriter
. També hem vist exemples pràctics i exercicis per reforçar els conceptes apresos. Ara estem preparats per avançar cap a la lectura de fitxers en el següent tema.
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