Foros del Web » Programación para mayores de 30 ;) » Java »

RandomAccessFile Java

Estas en el tema de RandomAccessFile Java en el foro de Java en Foros del Web. Saludos. Tengo un pequeño problema con archivos de acceso aleatorio ( .dat ). Lo que necesito es ingresar datos y despues consultarlos por campos. El ...
  #1 (permalink)  
Antiguo 02/04/2014, 09:58
 
Fecha de Ingreso: abril-2014
Mensajes: 1
Antigüedad: 10 años, 1 mes
Puntos: 0
Exclamación RandomAccessFile Java

Saludos. Tengo un pequeño problema con archivos de acceso aleatorio ( .dat ). Lo que necesito es ingresar datos y despues consultarlos por campos. El principal problema es que al recuperar la informacion lo que me presenta son cosas como !@#$% en lugar de un String y ademas me indica un error de ioexception, Stream close. De antemano gracias si alguien puedes ayudarme.

INGRESO


int cantidad = 1;
cantidad += cb_cant.getSelectedIndex();
double precio = Double.parseDouble(cb_precio.getText());
String cod = tf_cod.getText();
String des = tf_des.getText();
String prov = tf_pro.getText();
if(cod.length() < 10)
for(int i = cod.length(); i < 10; i++)
cod += "."; // completar los 10 caracteres
if(des.length() < 15)
for(int i = des.length(); i < 15; i++)
des += "."; // completar los 15 caracteres
if(prov.length() < 10)
for(int i = prov.length(); i < 10; i++)
prov += "."; // completar los 10 caracteres
try{
RandomAccessFile ventas = new RandomAccessFile("productos.dat","rw");
ventas.writeChars(cod + des + prov);
ventas.writeInt(cantidad);
ventas.writeDouble(precio);
ventas.close();
}
catch(FileNotFoundException e){
System.out.println(e.getMessage());
}
catch(IOException e){
System.out.println(e.getMessage());
}



LECTURA por codigo de registro


String codigo = tf_cod.getText();
char cod[] = new char [10];
char des[] = new char [15];
char prov[] = new char [10];
int cant = 0;
double precio = 0;
try {
RandomAccessFile archivo = new RandomAccessFile("productos.dat","r");
archivo.seek(0); //nos situamos al principio
for(int i = 0; i < archivo.length(); i += 82){
for(int j = 0; j < 10; j ++)
cod[j] = archivo.readChar();
if(tfcod.getText().equals(cod)){
archivo.seek(i);
for(int k = 0; k < 10; k ++)
cod[k] = archivo.readChar();
archivo.skipBytes(20);
for(int l = 0; l < 15; l ++)
des[l] = archivo.readChar();
archivo.skipBytes(50);
for(int m = 0; m < 10; m ++)
prov[m] = archivo.readChar();
archivo.skipBytes(70);
cant = archivo.readInt();
archivo.skipBytes(74);
precio = archivo.readDouble();
}
consulta.append(cod + "\n" + des + "\n" + prov + "\n" + cant + "\n" + precio);
archivo.close();
}
} catch (FileNotFoundException e) {
System.out.println("Fin de fichero");
} catch (IOException ex) {
System.out.println(ex.getMessage());
}

Etiquetas: lectura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:45.