Tarea 8: Escritura de Ficheros de Texto con FileWriter

Explicación del Ejercicio

En esta tarea se escribe información en un fichero de texto utilizando un flujo de caracteres FileWriter. El programa guarda una frase carácter a carácter, después las ciudades de un array de String y termina añadiendo un asterisco al final del fichero.

Conceptos y métodos clave:

  • Creación del flujo (FileWriter): Se instancia un FileWriter a partir del objeto File. Si el fichero no existe se crea, y si ya existe su contenido se sobrescribe (para añadir al final habría que pasar true como segundo parámetro).
  • Escritura carácter a carácter (write(char)): La frase se convierte en un array de char con toCharArray() y se recorre con un bucle for, escribiendo cada letra individualmente.
  • Escritura de cadenas completas (write(String)): Cada ciudad del array se escribe de una sola vez, añadiendo un espacio detrás para separarlas.
  • Añadir un carácter (append(char)): Añade el asterisco final al flujo de salida.
  • Gestión automática de recursos (try-with-resources): Cierra el FileWriter al terminar el bloque, lo que además garantiza que todo lo escrito se vuelque al disco.
  • Tamaño del fichero (length()): El resultado son 74 bytes, dos más que los 72 caracteres escritos, porque las vocales con tilde (é y á) ocupan 2 bytes cada una en UTF-8.

Código Fuente y Salida

Clase7.java
package ClaseFile;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author Eva Gallardo Romero
 * @date 24 de sep de 2026
 * Escribir en un fichero de texto "ciudades.txt" utilizando FileWriter:
 * - Primero una frase escrita carácter a carácter
 * - Después las ciudades de un array de Strings
 * - Finalmente añadir un asterisco al final con append
 * Al terminar mostrar el tamaño del fichero creado
 */
public class Clase7 {

    public static void main(String[] args) {

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

        // frase y array de ciudades que quiero guardar
        String frase = "Ciudades de Extremadura: ";
        String[] ciudades = {"Mérida", "Badajoz", "Cáceres", "Plasencia", "Almendralejo"};

        try (FileWriter fw = new FileWriter(fichero)) {

            // paso la frase a array de char y la escribo carácter a carácter
            char[] letras = frase.toCharArray();
            for (int i = 0; i < letras.length; i++) {
                fw.write(letras[i]);
            }

            // escribo cada ciudad completa dejando un espacio detrás
            for (int i = 0; i < ciudades.length; i++) {
                fw.write(ciudades[i] + " ");
            }

            // añado un asterisco para marcar el final
            fw.append('*');

            System.out.println("Se ha escrito correctamente el fichero " + fichero.getName());

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

        // compruebo el tamaño que ha ocupado el fichero
        System.out.println("Tamaño del fichero: " + fichero.length() + " bytes");
    }
}

Resultado Mostrado por Terminal

Salida de Consola
Se ha escrito correctamente el fichero ciudades.txt Tamaño del fichero: 74 bytes