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:
FileWriterBufferedWriterPrintWriter
- 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: UtilitzaBufferedWriterper 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
