elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Archivos de Accesso aleatorio... Parte 2 del otro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Archivos de Accesso aleatorio... Parte 2 del otro  (Leído 3,794 veces)
agusCarBan

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Archivos de Accesso aleatorio... Parte 2 del otro
« en: 2 Junio 2009, 20:31 pm »

Esta es la 2da gran duda... Si tengo una clase usuario con 3 atributos string y un int y a los string los hago que tenga la misma longitud... es decir los relleno de espacios en blanco por las dudas de que sean menores a por ejemplo 25... xq se supone que en archivos de acceso aleatorio todos los campos de un registro (strings) deben tener la misma longitud...
Puede uso el metodo grabar usuario y todo bien... busco un usuario por su legajo y todo bien... despues modifico un string buscandolo por su legajo y todo bien... es decir me tendria que volver atras cierta cantidad de bytes para despues poder volver a escribir... en este casi y como les dije... serian 154 bytes... despues que hago la modificacion y se me da por volver a buscar o usar el metodo de busqueda por legajo me tira una excepcion

java.io.EOFException
No existe un alumno con ese legajo !
        at java.io.RandomAccessFile.readChar(RandomAccessFile.java:695)
        at DBUsuarios.busquedaUser(DBUsuarios.java:181)
        at Principal.main(Principal.java:48)

cuando antes el metodo me andaba barbaro... como tengo que modificar exitosamente el archivo ?

lo que yo hago es una onda asi...
if(usu.getLegajo()==leg)
{
    flujo.seek(flujo.getFilePointer()-154)
    ---------
    ---------
    vuelvo a escribir todos los datos del usuario a excepcion del que quiero modificar ya que ese supuestamente lo obtengo por haberlo pasado como paerametro al metodo...
}

espero haberme dado a entender...


En línea

SeniorX


Desconectado Desconectado

Mensajes: 1.347


Programador Novato


Ver Perfil WWW
Re: Archivos de Accesso aleatorio... Parte 2 del otro
« Respuesta #1 en: 6 Junio 2009, 05:20 am »

Yo haría un debug y así iría viendo los valores que toma Legajo cuando lo modificas supuestamente, ahí seguro que verías en que parte estas errando.

Pero como solución rápida yo simplemente escribiría todos los datos de nuevo. Lo otro que haría sería borrar el legajo que quieras cambiar y teniendo esa variable vacía entonces lo escribiría de nuevo.


Suerte!


En línea

Código:
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}
Precaución: La programacion puede producir adiccion
Eliptico

Desconectado Desconectado

Mensajes: 153


Ver Perfil
Re: Archivos de Accesso aleatorio... Parte 2 del otro
« Respuesta #2 en: 6 Junio 2009, 06:51 am »

¡¡¡Buenas!!!

No se si te he entendido bien con lo que planteas, pero bueno, aunque se que es java, te doy mi experiencia con los textos de C/C++ que he leido hasta ahora.

Cuando se tiene una estructura de datos de por ejemplo un char, un int y un double, el espacio que ocupa una variable de este tipo de dato en memoria o en un fichero, no tiene porque ser la suma de lo que ocupan todos sus miembros, puede ser mayor (nunca me he molestado en comprobarlo). No se si lo llamaban alineacion de los campos o algo asi.

Lo que se recomienda es leer todo el bloque de datos, modificar el que quieras y volver a guardar el mismo bloque donde estaba.

¿No existe en java el operador sizeof? ¿o sino algo parecido que te devuelva el espacio que ocupa su argumento?

Si ese no es el problema, no se me ocurre que es lo que puede ser, ya que como he dicho antes, de java no controlo.

¡¡¡Un saludo!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Seguridad de Accesso/Administrador
Windows
XresH 2 2,066 Último mensaje 21 Mayo 2013, 00:54 am
por XresH
Toq, llega otro smartwatch por parte de Qualcomm
Noticias
wolfbcn 0 946 Último mensaje 5 Septiembre 2013, 14:15 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines