gentoo linux, java, software libre y otras hierbas
feb, 11 2008 - 10:50 am

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

abrir archivo

actualizar archivo

nuevo registro

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!

Descargar código fuente

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

16 Comentarios en “[código] Ejemplo completo de archivos aleatorios en Java”

  1. Jhonny dice:

    Lo baje y lo corri, todo bien hasta que le digo crear, sera que me falto hacer algo ???

  2. Casidiablo dice:

    Qué error te aparece?

  3. Jhonny dice:

    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.

  4. Casidiablo dice:

    ¿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?

  5. Manuel Coy dice:

    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

  6. Manuel Coy dice:

    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)

  7. Casidiablo dice:

    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!

  8. Manuel Coy dice:

    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

  9. Manuel Coy dice:

    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

  10. Manuel C dice:

    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

  11. Cristian dice:

    Manuel, como te comento en el correo, la solución para analizar strings separados por ; es la clase StringTokenizer.

    Un saludo!

  12. miguelg dice:

    Excelente aporte, me ha servido mucho para empezar en esto de la programación en java Gracias!

  13. Erick dice:

    A mi tambian me da el mismo error(cuando le doy CREAR) y no se que hacer

  14. Santiago dice:

    Vos sos un duro.. !! sin palabras…

¡Déjanos tu comentario!