Tarea 10: Escritura de Ficheros de Texto con PrintWriter

Explicación del Ejercicio

En esta tarea se reescribe el ejercicio anterior con PrintWriter, que permite escribir en un fichero con los mismos métodos que se usan para la consola (println y printf). Después se lee el fichero con BufferedReader para comprobar su contenido.

Conceptos y métodos clave:

  • Escritura formateada (PrintWriter): Se crea a partir de un FileWriter y ofrece println() y printf(), sin necesidad de llamar a newLine().
  • Cadenas de formato (printf): %d sustituye un entero y %n inserta el salto de línea del sistema operativo.
  • Gestión de errores: Los métodos de PrintWriter no lanzan IOException. La excepción que se captura proviene de la creación del FileWriter.
  • Comprobación del resultado: El fichero se vuelve a abrir con BufferedReader y se recorre con readLine() hasta que devuelve null, como en la Tarea 6.

Código Fuente y Salida

Clase9.java
package ClaseFile;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @author Eva Gallardo Romero
 * @date 25 de sep de 2026
 * Reescribir el ejercicio anterior utilizando PrintWriter.
 * Se guarda la tabla del 9 en el fichero "tabla9.txt" con println y printf
 * y después se lee el fichero para comprobar que se ha escrito bien.
 */
public class Clase9 {

    public static void main(String[] args) {

        // objeto File del fichero que voy a escribir
        File fichero = new File("tabla9.txt");

        // PrintWriter permite usar println y printf igual que System.out
        try (PrintWriter pw = new PrintWriter(new FileWriter(fichero))) {

            // escribo un título con println
            pw.println("TABLA DEL 9");

            // escribo cada fila con printf
            for (int i = 1; i <= 10; i++) {
                pw.printf("9 x %d = %d%n", i, 9 * i);
            }

        } catch (IOException e) {
            System.out.println("Error de E/S: " + e.getMessage());
            return;
        }

        // leo el fichero línea a línea para comprobar el resultado
        System.out.println("Contenido de " + fichero.getName() + ":");
        try (BufferedReader br = new BufferedReader(new FileReader(fichero))) {

            String linea;
            while ((linea = br.readLine()) != null) {
                System.out.println(linea);
            }

        } catch (IOException e) {
            System.out.println("Error al leer el fichero: " + e.getMessage());
        }
    }
}

Resultado Mostrado por Terminal

Salida de Consola
Contenido de tabla9.txt: TABLA DEL 9 9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81 9 x 10 = 90