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.