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

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

[java]

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();
}
}

[/java]

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

[java]

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

[/java]

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.