Leer de un fichero.

plok27
16 de Noviembre del 2004
Hola!

Debo leer un fichero en el cual hay integers, doubles y strings. He intentado utilizar las clases FileInputStream y DataInputStream, con sus métodos readInt, readDouble, etc, pero me coge mal los datos.

Según he leído más tarde, un DataInputStream solo puede leer datos escritos por DataOutputStream, porque no utiliza un formato ASCII estándard, sinó UTF-8, un "unicode algo modificado", dicen.

Entonces... como puedo leer un fichero que esté escrito en ASCII normal, si entiendo que no puedo utilizar las clases anteriormente mencionadas?

Yo quiero coger los datos con sus formatos, si son integers, pues ponerlos en un int, si son doubles, en un double, si son palabras, en un string... si lo cojo todo junto en una línea (que por cierto, el readLine aparece como "deprecated" y no se puede usar, creo) luego podré darle formato? Como?

Muchas gracias!

Tigre Negro
16 de Noviembre del 2004
La codificacion UTF-8 es para leer formato ASCII (caractereres raros) La codificacion Latin-1 es unicode.

Saludos

chuidiang
16 de Noviembre del 2004
Para leer ficheros sin liarte mucho puedes usar la clase RandomAccessFile.

Si el fichero es de texto y se puede leer (con cadenas de caracteres y numeros en formato ascii que se entienden), debes leer siempre strings (por ejemplo, lineas completas con el readLine() que aqui no esta deprecated) y luego extraer subcadenas (puedes usar la clase StringTokenizer) y usar metodos de las clases Integer, Double, etc para hacer las conversiones a int, double, etc.

Los metodos readInt() y demas solo sirven si el fichero contiene el entero en formato de entero, es decir, cuatro bytes raros que el ordenador entiende, pero tu no cuando miras el fichero.

Se bueno.

Sito
16 de Noviembre del 2004
Si el fichero es de uso exclusivo para tu aplicacion y no hace falta que sea 'legible', puedes utilizar las clases ObjectInputStream e ObjectOutputStream, que sirven para leer y almacenar objetos en ficheros.