Creacion de archivo plano y su lectura
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.
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.
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
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
