Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Escribir ficheros de texto

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

Guardar la clasificación del torneo

Tu instituto organiza un torneo de fútbol. Tu programa calcula los puntos de cada equipo.

Si solo los escribe en pantalla, se pierden al cerrar. Mañana habría que calcularlo todo otra vez.

Hoy aprendes a escribir los resultados en un fichero de texto, para guardarlos.

Palabras clave

PalabraQué significaEjemplo
PrintWriterUna clase para escribir texto. Tiene println y print, como System.out.new PrintWriter("torneo.txt")
flushManda al destino lo que el PrintWriter tenía esperando.out.flush()
closeTermina de escribir y cierra el fichero. También hace flush.out.close()
SobrescribirEmpezar el fichero de cero. Lo que había se pierde.new PrintWriter("torneo.txt")
AñadirEscribir al final del fichero, sin borrar lo que ya tenía.new FileWriter("torneo.txt", true)

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Escribir es como imprimir

Ya conoces System.out.println. Un PrintWriter tiene los mismos métodos: println y print.

La diferencia es el destino. System.out escribe en la pantalla. Un PrintWriter escribe donde tú le digas: un fichero, la memoria o incluso la pantalla.

Aquí lo probamos escribiendo en la pantalla, para ver el resultado.

Pruébalo: escribir con PrintWriter

Código: java
import java.io.PrintWriter;

public class Main {
    public static void main(String[] args) {
        // Escribimos en la pantalla. Con un fichero sería igual.
        PrintWriter out = new PrintWriter(System.out);

        out.println("Torneo del instituto");
        out.println("Los Tigres: 3 puntos");
        out.println("Las Águilas: 1 punto");
        out.print("Fin");
        out.print(" de la jornada");
        out.println();

        // flush manda lo que estaba esperando.
        out.flush();
    }
}

Con un fichero de verdad

Para escribir en un fichero, le das el nombre al PrintWriter: new PrintWriter("torneo.txt").

Si el fichero no existe, se crea. Si ya existe, se borra lo que tenía y empieza de cero.

El try con paréntesis cierra el fichero solo al terminar. Puede lanzar FileNotFoundException, así que lleva su catch.

Así se escribe un fichero de verdad

Código: java
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Main {
    public static void main(String[] args) {
        // Los paréntesis del try cierran el fichero al terminar.
        try (PrintWriter out = new PrintWriter("torneo.txt")) {
            out.println("Tigres;3");
            out.println("Águilas;1");
        } catch (FileNotFoundException e) {
            System.out.println("No puedo crear el fichero torneo.txt");
        }
    }
}

Si no cierras, puede quedar vacío

Advertencia

El PrintWriter guarda el texto en una memoria y lo manda al fichero más tarde. Si el programa acaba sin close ni flush, parte del texto, o todo, no llega. Usa el try con paréntesis o llama a close.

Repaso rápido

Inténtalo

Repaso rápido

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

Ver lo que se escribiría

Para comprobar qué texto tendría un fichero, un PrintWriter puede escribir en un StringWriter. Es un texto que vive en la memoria.

Con toString() lo lees. Así pruebas tu código sin crear ningún fichero.

Las pruebas de la tarea de hoy usan este truco.

La lección continúa

8 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.