Creacion de archivo plano y su lectura

Nauta69
11 de Noviembre del 2005
Saludos. Estoy tratando de escribir un archivo plano con tres datos por registro: un string, un entero y un real. Estoy utilizando un DataOutputStream asociado a un archivo "pedido.dat" . Intento escribir los tres datos separados por caracter 't' , pero despues del string no funciona sino con 'n'. Ademas al escribirlos a pantalla, los caracteres a parecen separados por un espacio en blanco ¿? . Como debo escribir y leer correctamente los registros para que no suceda las dos cosas anteriores?

Anexo codigo:
salida y entrada son los DataOutputStream

1) escritura del registro
salida.writeChars(descripciones[j]);
salida.writeChar('n');
salida.writeInt(unidades[j]);
salida.writeChar('t');
salida.writeDouble(precios[j]);

2) lectura del registro
while ((descripcion=entrada.readLine())!=null) {
unidad=entrada.readInt();
entrada.readChar(); //lee el carácter tabulador
precio=entrada.readDouble();
System.out.println(unidad+" "+descripcion+" a "+precio+" pts.");
total=total+unidad*precio;
}

Gracias, por la ayuda.

chuidiang
11 de Noviembre del 2005
Hola:

Para ficheros planos yo uso la clase RandomAccessFile. Tiene todos los métodos necesarios y funciona bien.

Los OutputStream y demás tiene el problema de que están pensados mucho para bytes y resulta que en java un char son dos bytes (por aquello de los unicode), por lo que las lecturas y escturas de caracteres deben hacerse con mucho cuidado y con los métodos adecuados, o te pasarán cosas como esa.

Se bueno