Curso de Java. Entrada y salida con ficheros: ficheros de texto

Escrito por Adrián Crespo
Java
0

Volvemos otro lunes más con el curso de Java de RedesZone.net.

En la entrega anterior y después de haber introducido brevemente los Streams y la entrada y salida en Java, comenzamos con la  lectura y escritura de ficheros binarios y os dimos un código fuente base tanto para la lectura como para la escritura de ficheros binarios, hoy vamos a continuar con otro tema que seguramente os interese igual o más que el de los fichero binarios: la entrada y salida en ficheros de texto.

En esta entrega hablaremos sobre como realizar la lectura ficheros con y sin formato y hablaremos sobre la escritura. También os proporcionaremos algunos códigos que os pueden ser de mucha utilidad.

Salida de texto

Es posible escribir variables y strings en un fichero de texto

Se usa la pareja de streams FileWriter (iniciador) y PrintWriter (filtro)

Operaciones más habituales de la clase FileWriter

Operaciones más habituales de la clase PrintWriter

  • Los métodos no lanzan IOException:

Para saber si ha habido un error hay que llamar a checkError

 Ejemplo de escritura de un fichero de texto


static void ejemploEscribeFichTexto(String nomFich,
 int i, double x, String str) throws IOException {
 PrintWriter out = null;
try {
 // crea los streams
 out = new PrintWriter(nomFich);
 // escribe los datos en el fichero
 out.println("Entero: "+i+" Real: "+x);
 out.println("String: "+str);
 } finally {
 if (out != null)
 out.close();
 }
}

El fichero generado es el siguiente:


Entrada de ficheros de texto

La lectura de un fichero de texto se realiza con la pareja de streams FileReader (iniciador) y BufferedReader (filtro)

*Operaciones más habituales con FileReader

*Operaciones de BufferedReader

La lectura se realiza línea a línea con readLine()

  • Luego cada línea se procesa (con split(), indexOf(), …)
  • Y los trozos se convierten a otros datos con las operaciones parseInt(), parseDouble(), …
  • Existe una forma alternativa de procesado: clase Scanner que veremos en la próxima entrega.

Ejemplo de lectura de un fichero de texto

Leer parejas de texto (una línea) y número (otra línea) y escribirlas en pantalla

primero
1.0
segundo
3.0
tercero
4.5
cuarto
8.0
quinto
34R.5
sexto
1.0


import java.io.*;
public class LeeStrings {
 public static void main(String[] args)
 throws IOException {
 String str, num;
double x;

 BufferedReader ent = null;
 try {
 ent = new BufferedReader(
 new FileReader("d2.txt"));
 do {
 str=ent.readLine(); // lee una línea
 // si hay más líneas seguimos procesando
if (str!=null) {
 // escribe la línea de texto
 System.out.println("Texto: "+str);

// lee línea y la convierte a número
 num=ent.readLine();
try {
 x=Double.parseDouble(num);
 System.out.println("Numero:"+x);
 } catch (NumberFormatException e) {
 System.out.println ("Error al "+
 "leer el numero real: "+num);
 } // try
 } // if
 } while (str!=null);
 } finally {
 if (ent!=null) {
 ent.close();
 }
 } // try
 } // main
} // clase

El programa muestra lo siguiente en la pantalla:

Texto: primero
Numero: 1.0
Texto: segundo
Numero: 3.0
Texto: tercero
Numero: 4.5
Texto: cuarto
Numero: 8.0
Texto: quinto
Error al leer el número real: 34R.5
Texto: sexto
Numero: 1.0

Hasta aquí la entrega de hoy que nos ha servido para saber como realizar la lectura y la escritura de fichero de texto.

En la próxima entrega hablaremos de la entrada y la salida con un cierto formato y explicaremos para que sirve la clase Scanner y como se puede utilizar en la lectura de ficheros.