[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!









Manuel Coy dice:
Julio 18th, 2008 a las 12:16 pm
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
Manuel Coy dice:
Julio 18th, 2008 a las 12:18 pm
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)
Casidiablo dice:
Julio 18th, 2008 a las 12:30 pm
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!
Manuel Coy dice:
Julio 18th, 2008 a las 3:01 pm
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
Manuel Coy dice:
Julio 18th, 2008 a las 3:09 pm
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
Manuel C dice:
Septiembre 18th, 2008 a las 12:47 am
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
Cristian dice:
Septiembre 18th, 2008 a las 10:18 am
Manuel, como te comento en el correo, la solución para analizar strings separados por ; es la clase StringTokenizer.
Un saludo!
miguelg dice:
Noviembre 1st, 2008 a las 12:28 pm
Excelente aporte, me ha servido mucho para empezar en esto de la programación en java Gracias!