[código] Ejemplo completo de archivos aleatorios en Java
En el siguiente ejemplo, el cual es una continuación de los ejemplos anteriores (Crear archivo aleatorio, Escribir en un archivo de acceso aleatorio, Leer datos de un archivo de acceso aleatorio), veremos una completa aplicación para manipular un archivo de acceso aleatorio, en donde podremos crear, actualizar y eliminar registros.
El resultado…




El código…
El código fuente de este programa es, de por sí, bastante largo… por lo que en esta ocasión he dejado directamente el link de descargar… que les sirva!
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.
16 Comentarios | deja el tuyo





Gracias!!
Lo baje y lo corri, todo bien hasta que le digo crear, sera que me falto hacer algo ???
Qué error te aparece?
Pues cuando intento crear un nuevo registro y le ingreso los datos, me sale “error al escribir en el archivo”, no se si hace falta algo mas.
¿Pero tienes el mismo ejemplo que pongo arriba? ¿O es una versión modificada por tí? ¿Estás seguro de que tienes premisos de escritura?
Que tal casidiablo, un favor es que me sale un erro cuando le doy crear
ingreso los datos de la siguiente manera
1
manuel
coy
450.000
le doy crear
y me sale error ES
error al escribir el archivo
me puede ayudar en esto porfa
Error que me sale
init:
deps-jar:
compile-single:
run-single:
java.io.EOFException
at java.io.RandomAccessFile.readInt(RandomAccessFile.java:725)
at ProcesadorTransacciones2.RegistroCuentasAccesoAleatorio.leer(RegistroCuentasAccesoAleatorio.java:34)
at ProcesadorTransacciones2.EditorArchivo.obtenerRegistro(EditorArchivo.java:44)
at ProcesadorTransacciones2.EditorArchivo.nuevoRegistro(EditorArchivo.java:74)
at ProcesadorTransacciones2.ProcesadorTransacciones.realizarAccion(ProcesadorTransacciones.java:345)
at ProcesadorTransacciones2.ProcesadorTransacciones.access$000(ProcesadorTransacciones.java:18)
at ProcesadorTransacciones2.ProcesadorTransacciones$1.actionPerformed(ProcesadorTransacciones.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
java.io.EOFException
at java.io.RandomAccessFile.readInt(RandomAccessFile.java:725)
at ProcesadorTransacciones2.RegistroCuentasAccesoAleatorio.leer(RegistroCuentasAccesoAleatorio.java:34)
at ProcesadorTransacciones2.EditorArchivo.obtenerRegistro(EditorArchivo.java:44)
at ProcesadorTransacciones2.EditorArchivo.nuevoRegistro(EditorArchivo.java:74)
at ProcesadorTransacciones2.ProcesadorTransacciones.realizarAccion(ProcesadorTransacciones.java:345)
at ProcesadorTransacciones2.ProcesadorTransacciones.access$000(ProcesadorTransacciones.java:18)
at ProcesadorTransacciones2.ProcesadorTransacciones$1.actionPerformed(ProcesadorTransacciones.java:50)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Hola Manuel,
El archivo lo debes crear con el programa que puse en:
http://casidiablo.net/randomaccessfile-java/
Este crea el archivo vacio pero con los espacios. Luego, si haces lo que estás intentando hacer.
P.d. al poner el saldo, evita poner el punto (.), si es por ejemplo “Cuatro mil quinientos”, pon 4500 y no 4.500.
Un saludo!
q tal casidiablo baje solo la clase de CrearArchivo aleatorio, bajo todos los del link que me dijo solo con ese es necesario es que no me funciono asi solo con esa clase
no mentiras si sirve si no que uno piensa que no ha agregado nada por lo que el boton ni cambia ni se muestra un mensaje pero ya esta bien gracias casi diablo
mira lo q sucede es q tengo un problema con una generacion de listados de un archivo plano a ver si me puedes colaborar te la envie a tu correo con adjunto es solo q me des como una guia ya casi saco ese codigo solo me falta eso y gracias por tus colaboraciones en anteriores preguntas
Manuel, como te comento en el correo, la solución para analizar strings separados por ; es la clase StringTokenizer.
Un saludo!
Excelente aporte, me ha servido mucho para empezar en esto de la programación en java Gracias!
A mi tambian me da el mismo error(cuando le doy CREAR) y no se que hacer
Vos sos un duro.. !! sin palabras…