1) Los registros Java almacenan datos de diferentes tipos usando clases en lugar de variables tradicionales de registro. 2) Los archivos permiten almacenar datos de forma permanente después de que finaliza un programa. 3) La lectura y escritura son las operaciones básicas con archivos secuenciales en Java, donde los datos se almacenan y leen de forma consecutiva.
Este documento describe las diferentes formas de leer y escribir información en archivos en Java. Explica los conceptos de flujos y clases asociadas para el acceso a archivos, como File, FileReader y las operaciones básicas como creación, apertura, cierre, lectura y escritura. También cubre temas como acceso secuencial y directo a archivos y las operaciones correspondientes a cada tipo de acceso.
El documento habla sobre los flujos de entrada y salida en Java. Define flujos como mecanismos para realizar operaciones de entrada y salida sobre dispositivos como teclado, pantalla, mouse, impresora y conexión de red. Explica que hay clases abstractas como InputStream y OutputStream que representan flujos de entrada y salida de bytes.
Este documento describe un módulo de Acceso a Datos que se desarrollará a lo largo de 6 semanas. El módulo cubrirá temas como bases de datos, XML, manejo de archivos, herramientas ORM y acceso a datos. Las 6 unidades incluyen programación PL/SQL, bases de datos XML, manejo de archivos, ORM, conectores y componentes de acceso a datos. Se utilizará el entorno Eclipse para los ejercicios prácticos.
Jyoc java-cap14 persistencia. ficheros corrientesJyoc X
Cursos gratis de programación en Java. Persistencia con ficheros. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Este documento describe las características principales del XML como formato de almacenamiento de información. Explica que el XML utiliza etiquetas definidas por el usuario para organizar jerárquicamente los datos en un documento. También cubre los conceptos de corrección sintáctica, validación y los mecanismos principales como DTD y esquemas XML para validar la estructura de un documento XML.
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc X
Cursos gratis de programación en Java. Persistencia con XML, JSON y PDF. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Este documento presenta una comparación entre archivos secuenciales y aleatorios, describiendo sus definiciones, ventajas, desventajas e instrucciones principales. Explica que los archivos secuenciales almacenan la información de forma consecutiva mientras que los aleatorios guardan registros de igual tamaño aunque no se utilicen todos los espacios, y permite lecturas y escrituras directas.
1) El documento describe los diferentes métodos para nombrar archivos y directorios en sistemas de archivos distribuidos, incluyendo usar el nombre de la máquina, montar sistemas de archivos remotos, y usar un espacio de nombres global. 2) También discute los desafíos de lograr transparencia con respecto a la posición y mantener la misma jerarquía de directorios vista en todas partes. 3) Explica que la mayoría de sistemas usan nombres de dos niveles, con nombres simbólicos para usuarios y nombres bin
Este documento describe las diferentes formas de leer y escribir información en archivos en Java. Explica los conceptos de flujos y clases asociadas para el acceso a archivos, como File, FileReader y las operaciones básicas como creación, apertura, cierre, lectura y escritura. También cubre temas como acceso secuencial y directo a archivos y las operaciones correspondientes a cada tipo de acceso.
El documento habla sobre los flujos de entrada y salida en Java. Define flujos como mecanismos para realizar operaciones de entrada y salida sobre dispositivos como teclado, pantalla, mouse, impresora y conexión de red. Explica que hay clases abstractas como InputStream y OutputStream que representan flujos de entrada y salida de bytes.
Este documento describe un módulo de Acceso a Datos que se desarrollará a lo largo de 6 semanas. El módulo cubrirá temas como bases de datos, XML, manejo de archivos, herramientas ORM y acceso a datos. Las 6 unidades incluyen programación PL/SQL, bases de datos XML, manejo de archivos, ORM, conectores y componentes de acceso a datos. Se utilizará el entorno Eclipse para los ejercicios prácticos.
Jyoc java-cap14 persistencia. ficheros corrientesJyoc X
Cursos gratis de programación en Java. Persistencia con ficheros. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Este documento describe las características principales del XML como formato de almacenamiento de información. Explica que el XML utiliza etiquetas definidas por el usuario para organizar jerárquicamente los datos en un documento. También cubre los conceptos de corrección sintáctica, validación y los mecanismos principales como DTD y esquemas XML para validar la estructura de un documento XML.
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc X
Cursos gratis de programación en Java. Persistencia con XML, JSON y PDF. Orientado a Grado, DAM y DAW. Otros cursos disponibles para Android, Swift, Base de datos, javascript, servicios y procesos...
Este documento presenta una comparación entre archivos secuenciales y aleatorios, describiendo sus definiciones, ventajas, desventajas e instrucciones principales. Explica que los archivos secuenciales almacenan la información de forma consecutiva mientras que los aleatorios guardan registros de igual tamaño aunque no se utilicen todos los espacios, y permite lecturas y escrituras directas.
1) El documento describe los diferentes métodos para nombrar archivos y directorios en sistemas de archivos distribuidos, incluyendo usar el nombre de la máquina, montar sistemas de archivos remotos, y usar un espacio de nombres global. 2) También discute los desafíos de lograr transparencia con respecto a la posición y mantener la misma jerarquía de directorios vista en todas partes. 3) Explica que la mayoría de sistemas usan nombres de dos niveles, con nombres simbólicos para usuarios y nombres bin
El documento describe las distintas operaciones que se pueden realizar en archivos, incluyendo creación, consulta, actualización, clasificación, reorganización, destrucción, reunión y rotura. Explica cómo abrir y cerrar archivos y borrarlos del soporte de almacenamiento. Los integrantes del proyecto son Jhon Aguilar, Alejandro Chamba y Galo Muñoz.
Este documento describe los conceptos básicos de la manipulación de archivos en C++, incluyendo cómo abrir, cerrar y realizar operaciones en archivos, así como los diferentes tipos de archivos y formas de acceder a ellos. Explica funciones clave como fopen(), fread(), fwrite(), fseek() y ftell() y cómo usarlas para leer, escribir, mover el puntero y obtener la posición actual dentro de un archivo. Finalmente, propone una actividad práctica para crear y manipular un archivo usando estas funciones.
Este documento trata sobre los archivos y su manejo. Explica que un archivo es una colección de elementos lógicamente relacionados y almacenados en memoria secundaria, y que su finalidad es guardar datos de forma permanente para su fácil recuperación y modificación. También describe los diferentes tipos de archivos, flujos de archivos, métodos de estado de archivos, operaciones básicas como creación, consulta y actualización, y la biblioteca estándar fstream.h necesaria para manipular archivos en C++.
El documento describe los sistemas de archivos y sus componentes fundamentales. Explica que los archivos permiten almacenar información de forma persistente para que pueda ser accedida por múltiples procesos. Describe los requisitos básicos de los sistemas de archivos como almacenar grandes cantidades de datos, permitir el acceso concurrente y que la información persista aunque los procesos terminen. También cubre temas como la nomenclatura, estructura, tipos, atributos y operaciones básicas de los archivos.
El documento describe varias clases de .NET Framework para la gestión de archivos y la serialización de objetos, incluyendo clases para leer y escribir archivos y carpetas, trabajar con streams de datos, comprimir y encriptar datos, y serializar objetos a XML o como datos binarios. También cubre técnicas como el almacenamiento aislado y la monitorización de cambios en archivos.
Este documento describe los conceptos básicos de los sistemas de archivos. Explica que un archivo es la unidad más pequeña de almacenamiento lógico y tiene atributos como nombre, tamaño y permisos. También cubre los tipos de archivos, métodos de acceso, estructuras de almacenamiento y directorios, así como las operaciones y la compartición de archivos.
Este documento describe los sistemas de archivos y sus componentes. Explica que los sistemas de archivos mapean los archivos a los dispositivos de almacenamiento físicos y los organizan en directorios. Describe los conceptos básicos de los archivos como su nombre, tamaño y atributos, y explica cómo el sistema operativo realiza operaciones como la creación, lectura y escritura de archivos. También cubre temas como los métodos de acceso a archivos, la estructura de directorios y la compartición de archivos.
Este documento describe la estructura de directorios y archivos del sistema de archivos de acuerdo con el Estándar de Jerarquía de Sistemas de Archivos (FHS). Explica los propósitos y contenidos de los principales directorios como /boot, /dev, /etc, /lib, /opt, /proc, /sbin, /usr, /var y otros. También cubre algunas ubicaciones específicas de Red Hat Enterprise Linux como /var/cache/yum/ y /etc/sysconfig/.
Este documento describe los sistemas de archivos y su interfaz. Explica las funciones de los sistemas de archivos, describe las interfaces y analiza los compromisos de diseño como los métodos de acceso, la compartición de archivos y las estructuras de directorio. También cubre temas como los atributos de los archivos, las operaciones con archivos, los tipos de archivos y la protección de archivos.
Un archivo secuencial indexado proporciona acceso secuencial y aleatorio a los registros mediante la combinación de un archivo índice y un archivo de datos. Consta de un archivo índice que almacena la clave y dirección de cada bloque de registros, y un archivo de datos donde se almacenan los registros de forma secuencial. Permite acceder a los registros de forma secuencial siguiendo el orden de las claves o de forma aleatoria a través de las direcciones del índice.
Este documento describe los diferentes tipos de almacenamiento de datos disponibles en Android, incluyendo SharedPreferences, archivos, SQLite y almacenamiento en formatos JSON y XML. SharedPreferences se usa para almacenar datos de configuración pequeños de forma no estructurada, mientras que SQLite permite almacenar datos estructurados de forma relacional en una base de datos. Los archivos se usan para almacenar datos binarios o de texto, y JSON y XML son opciones para almacenar datos de forma estructurada.
Este documento explica la organización de la información en MySQL. MySQL almacena datos en tablas dentro de bases de datos, las cuales son directorios. Cada tabla contiene tres archivos que almacenan la estructura, datos e índices de la tabla. El documento guía al lector en la creación de una base de datos y tabla de ejemplo, así como en la adición de un nuevo usuario para acceder a las bases de datos.
El documento describe un archivo secuencial indexado, el cual consta de tres áreas: un área de índices, un área principal y un área de desbordamiento. El área de índices contiene registros con la clave del último registro de cada bloque y un apuntador al archivo principal. El área principal almacena los registros ordenados por clave. El área de desbordamiento almacena registros cuando el área principal está llena.
Ensayo de formatos de archivos de secuenciasErickRodEs
Este documento describe los formatos de archivos de secuencia. Explica que los archivos de secuencia almacenan cadenas de caracteres ordenadas que se usan principalmente en bioinformática. Describe varios formatos comunes como FASTA, Phylip, EMBL y otros. Concluye que debido a la variedad de programas para análisis de secuencias, existen diferentes formatos exclusivos o compatibles entre aplicaciones.
Esta encargada de gestionar los datos que residen en almacenamiento secundario. Los datos lógicamente relacionados ubicados en almacenamiento secundario se organizan generalmente en colecciones caracterizadas.
El documento describe los objetos principales de JDBC para interactuar con bases de datos desde Java: Connection, Statement y ResultSet. Connection permite conectarse a la base de datos, Statement ejecuta consultas SQL y ResultSet contiene los resultados devueltos.
Estructura de archivos secuencial indexadodexter120
El documento describe la estructura de archivos secuencial indexado, la cual organiza los registros en tres áreas: el área primaria almacena los registros ordenados por clave; el área de índices contiene la clave y posición de cada bloque en el área primaria; y el área de overflow almacena registros agregados después de llenarse el área primaria. Permite búsquedas rápidas a través del índice pero ocupa más espacio que archivos secuenciales.
El documento trata sobre varios temas relacionados con sistemas operativos y computación. Explica el multiproceso y multiusuario, describiendo que el multiproceso permite la ejecución concurrente de múltiples procesos en una CPU o varias CPUs, mientras que el multiusuario permite proveer servicio a varios usuarios de forma simultánea o simulada. También define archivo, carpeta/directorio, sistema de archivos y compresión de datos.
El documento habla sobre la administración de archivos. Explica que los archivos son conjuntos de información relacionada definida por su creador y que pueden ser manipulados como unidades mediante operaciones como abrir, cerrar y copiar. También describe los componentes de un sistema de archivos como los métodos de acceso, la administración de archivos y almacenamiento, y los mecanismos de integridad.
Is diagramas de casos de uso y objeto - ejerciciosJoseArturoG
El documento presenta diagramas de casos de uso y objetos para una aplicación de gestión de películas. El diagrama de casos de uso incluye casos como registrar datos de películas y clientes, alquilar películas, validar ejemplares alquilados. El diagrama de objetos incluye objetos como película, actores, director, cliente, ejemplar.
El documento presenta una discusión sobre objetos de negocios (BO). Explica que los BO son representaciones de conceptos de negocios como entidades, eventos y procesos, y proveen una taxonomía de estos. También describe los beneficios de los BO como administrar cambios en reglas de negocios y apoyar la reingeniería de procesos.
El documento describe las distintas operaciones que se pueden realizar en archivos, incluyendo creación, consulta, actualización, clasificación, reorganización, destrucción, reunión y rotura. Explica cómo abrir y cerrar archivos y borrarlos del soporte de almacenamiento. Los integrantes del proyecto son Jhon Aguilar, Alejandro Chamba y Galo Muñoz.
Este documento describe los conceptos básicos de la manipulación de archivos en C++, incluyendo cómo abrir, cerrar y realizar operaciones en archivos, así como los diferentes tipos de archivos y formas de acceder a ellos. Explica funciones clave como fopen(), fread(), fwrite(), fseek() y ftell() y cómo usarlas para leer, escribir, mover el puntero y obtener la posición actual dentro de un archivo. Finalmente, propone una actividad práctica para crear y manipular un archivo usando estas funciones.
Este documento trata sobre los archivos y su manejo. Explica que un archivo es una colección de elementos lógicamente relacionados y almacenados en memoria secundaria, y que su finalidad es guardar datos de forma permanente para su fácil recuperación y modificación. También describe los diferentes tipos de archivos, flujos de archivos, métodos de estado de archivos, operaciones básicas como creación, consulta y actualización, y la biblioteca estándar fstream.h necesaria para manipular archivos en C++.
El documento describe los sistemas de archivos y sus componentes fundamentales. Explica que los archivos permiten almacenar información de forma persistente para que pueda ser accedida por múltiples procesos. Describe los requisitos básicos de los sistemas de archivos como almacenar grandes cantidades de datos, permitir el acceso concurrente y que la información persista aunque los procesos terminen. También cubre temas como la nomenclatura, estructura, tipos, atributos y operaciones básicas de los archivos.
El documento describe varias clases de .NET Framework para la gestión de archivos y la serialización de objetos, incluyendo clases para leer y escribir archivos y carpetas, trabajar con streams de datos, comprimir y encriptar datos, y serializar objetos a XML o como datos binarios. También cubre técnicas como el almacenamiento aislado y la monitorización de cambios en archivos.
Este documento describe los conceptos básicos de los sistemas de archivos. Explica que un archivo es la unidad más pequeña de almacenamiento lógico y tiene atributos como nombre, tamaño y permisos. También cubre los tipos de archivos, métodos de acceso, estructuras de almacenamiento y directorios, así como las operaciones y la compartición de archivos.
Este documento describe los sistemas de archivos y sus componentes. Explica que los sistemas de archivos mapean los archivos a los dispositivos de almacenamiento físicos y los organizan en directorios. Describe los conceptos básicos de los archivos como su nombre, tamaño y atributos, y explica cómo el sistema operativo realiza operaciones como la creación, lectura y escritura de archivos. También cubre temas como los métodos de acceso a archivos, la estructura de directorios y la compartición de archivos.
Este documento describe la estructura de directorios y archivos del sistema de archivos de acuerdo con el Estándar de Jerarquía de Sistemas de Archivos (FHS). Explica los propósitos y contenidos de los principales directorios como /boot, /dev, /etc, /lib, /opt, /proc, /sbin, /usr, /var y otros. También cubre algunas ubicaciones específicas de Red Hat Enterprise Linux como /var/cache/yum/ y /etc/sysconfig/.
Este documento describe los sistemas de archivos y su interfaz. Explica las funciones de los sistemas de archivos, describe las interfaces y analiza los compromisos de diseño como los métodos de acceso, la compartición de archivos y las estructuras de directorio. También cubre temas como los atributos de los archivos, las operaciones con archivos, los tipos de archivos y la protección de archivos.
Un archivo secuencial indexado proporciona acceso secuencial y aleatorio a los registros mediante la combinación de un archivo índice y un archivo de datos. Consta de un archivo índice que almacena la clave y dirección de cada bloque de registros, y un archivo de datos donde se almacenan los registros de forma secuencial. Permite acceder a los registros de forma secuencial siguiendo el orden de las claves o de forma aleatoria a través de las direcciones del índice.
Este documento describe los diferentes tipos de almacenamiento de datos disponibles en Android, incluyendo SharedPreferences, archivos, SQLite y almacenamiento en formatos JSON y XML. SharedPreferences se usa para almacenar datos de configuración pequeños de forma no estructurada, mientras que SQLite permite almacenar datos estructurados de forma relacional en una base de datos. Los archivos se usan para almacenar datos binarios o de texto, y JSON y XML son opciones para almacenar datos de forma estructurada.
Este documento explica la organización de la información en MySQL. MySQL almacena datos en tablas dentro de bases de datos, las cuales son directorios. Cada tabla contiene tres archivos que almacenan la estructura, datos e índices de la tabla. El documento guía al lector en la creación de una base de datos y tabla de ejemplo, así como en la adición de un nuevo usuario para acceder a las bases de datos.
El documento describe un archivo secuencial indexado, el cual consta de tres áreas: un área de índices, un área principal y un área de desbordamiento. El área de índices contiene registros con la clave del último registro de cada bloque y un apuntador al archivo principal. El área principal almacena los registros ordenados por clave. El área de desbordamiento almacena registros cuando el área principal está llena.
Ensayo de formatos de archivos de secuenciasErickRodEs
Este documento describe los formatos de archivos de secuencia. Explica que los archivos de secuencia almacenan cadenas de caracteres ordenadas que se usan principalmente en bioinformática. Describe varios formatos comunes como FASTA, Phylip, EMBL y otros. Concluye que debido a la variedad de programas para análisis de secuencias, existen diferentes formatos exclusivos o compatibles entre aplicaciones.
Esta encargada de gestionar los datos que residen en almacenamiento secundario. Los datos lógicamente relacionados ubicados en almacenamiento secundario se organizan generalmente en colecciones caracterizadas.
El documento describe los objetos principales de JDBC para interactuar con bases de datos desde Java: Connection, Statement y ResultSet. Connection permite conectarse a la base de datos, Statement ejecuta consultas SQL y ResultSet contiene los resultados devueltos.
Estructura de archivos secuencial indexadodexter120
El documento describe la estructura de archivos secuencial indexado, la cual organiza los registros en tres áreas: el área primaria almacena los registros ordenados por clave; el área de índices contiene la clave y posición de cada bloque en el área primaria; y el área de overflow almacena registros agregados después de llenarse el área primaria. Permite búsquedas rápidas a través del índice pero ocupa más espacio que archivos secuenciales.
El documento trata sobre varios temas relacionados con sistemas operativos y computación. Explica el multiproceso y multiusuario, describiendo que el multiproceso permite la ejecución concurrente de múltiples procesos en una CPU o varias CPUs, mientras que el multiusuario permite proveer servicio a varios usuarios de forma simultánea o simulada. También define archivo, carpeta/directorio, sistema de archivos y compresión de datos.
El documento habla sobre la administración de archivos. Explica que los archivos son conjuntos de información relacionada definida por su creador y que pueden ser manipulados como unidades mediante operaciones como abrir, cerrar y copiar. También describe los componentes de un sistema de archivos como los métodos de acceso, la administración de archivos y almacenamiento, y los mecanismos de integridad.
Is diagramas de casos de uso y objeto - ejerciciosJoseArturoG
El documento presenta diagramas de casos de uso y objetos para una aplicación de gestión de películas. El diagrama de casos de uso incluye casos como registrar datos de películas y clientes, alquilar películas, validar ejemplares alquilados. El diagrama de objetos incluye objetos como película, actores, director, cliente, ejemplar.
El documento presenta una discusión sobre objetos de negocios (BO). Explica que los BO son representaciones de conceptos de negocios como entidades, eventos y procesos, y proveen una taxonomía de estos. También describe los beneficios de los BO como administrar cambios en reglas de negocios y apoyar la reingeniería de procesos.
El documento describe la metodología del Proceso Unificado de Desarrollo de Software (PUD). El PUD es un proceso iterativo e incremental que consta de cuatro fases: inicio, elaboración, construcción y transición. Cada fase tiene actividades específicas como el modelado del negocio, la captura de requisitos, el análisis, el diseño e implementación y las pruebas, con el objetivo de desarrollar un producto de software de manera iterativa.
Este documento presenta una introducción al modelo de requerimientos en el desarrollo de software orientado a objetos. Explica los objetivos del modelo de requerimientos, los roles involucrados, y los métodos para identificar, clasificar, obtener y documentar los requerimientos, incluyendo la elaboración de casos de uso y la especificación de requerimientos de software.
Especificación de los requerimientos de la aplicación
Objetivos al diseñar un sistema de información
Que características son las que se deben diseñar
Manejo del proceso de Diseño para aplicaciones institucionales
Manejo de sistemas desarrollados por usuarios finales
Análisis y diseño de sistemas estructuradojr_palaciosg
Este documento presenta una discusión sobre el análisis y diseño de sistemas estructurado. Aborda temas como los fundamentos del análisis de sistemas, el rol del analista de sistemas, y el impacto del estilo organizacional en los sistemas de información. Explica el proceso de análisis de requerimientos, análisis, diseño e implementación de software desde varias perspectivas. Además, analiza diferentes metodologías para el desarrollo de sistemas y enfatiza la importancia de involucrar a los
Los sistemas de información están experimentando cambios fundamentales en cuatro aspectos: 1) las personas trabajan de manera más inteligente; 2) hay un cambio global en el concepto de industria; 3) las ideas y la información toman mayor importancia que el dinero; y 4) las personas que trabajan con la información dominan la fuerza laboral. Los analistas de sistemas desempeñan un papel cada vez más importante al diseñar sistemas confiables que sirvan para alcanzar objetivos organizacionales.
Transparencias del Tema 4 (Diseño del Software) de la asignatura Ingeniería del Software de Gestión de la Escuela Superior de Ingeniería Informática de la Universidad de Vigo
Tecnicas y herramientas de desarrollo de software(1)Gustavo Gualsema
Este documento describe diferentes técnicas y herramientas para el desarrollo de software. Explica técnicas de recolección de datos como la observación, entrevista y encuesta. Detalla los pasos para aplicar estas técnicas como determinar objetivos, registrar datos y analizar resultados. También cubre características de las técnicas como su estructura y tipos como abiertas y cerradas.
El documento habla sobre el manejo de archivos en C y C++. Explica que existen diferentes tipos de archivos como secuenciales y de acceso aleatorio, así como diferentes modos de apertura como lectura, escritura o lectura/escritura. También describe las funciones y tipos estándar de C como FILE, fopen, fclose, fgetc y fputc que se usan comúnmente para trabajar con archivos.
El documento habla sobre el manejo de archivos en C y C++. Explica que existen diferentes tipos de archivos como secuenciales y de acceso aleatorio, así como diferentes modos de apertura como lectura, escritura o lectura/escritura. También describe las funciones y tipos estándar de C como FILE, fopen, fclose, fgetc y fputc que se usan comúnmente para trabajar con archivos.
Los ficheros son necesarios para almacenar grandes cantidades de datos de forma permanente, incluso después de que los programas que los crean se hayan terminado. Los ficheros organizan los datos en registros relacionados entre sí y permiten el acceso secuencial y directo a los registros. Es importante comprender la utilidad de los ficheros para guardar información de forma permanente, a diferencia de los arrays que solo almacenan datos en memoria mientras se ejecuta el programa.
El documento describe los conceptos básicos de la gestión de archivos. Explica que la gestión de archivos proporciona servicios para el uso, acceso y control de archivos y directorios. También describe los requisitos básicos de los sistemas de archivos como la capacidad de crear, leer, borrar y modificar archivos de forma controlada. Finalmente, resume los diferentes métodos para la implementación y organización de archivos como la asignación contigua, lista enlazada y tablas de asignación.
El documento describe los conceptos básicos de los archivos y flujos en Java. Explica que los archivos se utilizan para almacenar datos de forma persistente más allá de la ejecución de un programa y que los datos en una computadora forman una jerarquía que va desde bits hasta registros y archivos. También describe las clases principales para la entrada y salida de archivos en Java como File, FileInputStream, FileOutputStream y cómo la serialización permite escribir y leer objetos completos a través de flujos.
El documento describe la estructura de archivos en Windows, la cual se organiza de forma arborescente similar a un árbol invertido, con la unidad lógica en la parte superior, las carpetas como ramas y los archivos como hojas. Se explica que las carpetas pueden contener tanto archivos como subcarpetas, y se muestra un ejemplo de estructura con carpetas y archivos. Adicionalmente, se indica que los usuarios pueden organizar libremente la estructura de archivos creando, borrando o moviendo carpetas.
Tecnológico Nacional de México
ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 6 archivos
En este material se manejan archivos de texto y archivos binarios.
Este documento describe los sistemas de archivos y cómo se almacena y organiza la información en una computadora. Explica que los archivos se almacenan en unidades de almacenamiento como discos duros y que se organizan en carpetas. También cubre los tipos de archivos, cómo se identifican, protegen y realizan operaciones con ellos como copiar, mover y eliminar.
03. Archivos Completo Obliogatorio Para Imprimir.pdfSiscoReparaciones
El documento describe los conceptos básicos de los archivos y su organización en la computadora. Explica que la memoria principal (RAM) es volátil y se usa para procesar datos temporalmente, mientras que la memoria secundaria o externa almacena los datos de forma permanente en dispositivos como discos duros. También define los archivos como estructuras de datos que permiten almacenar grandes volúmenes de información de forma permanente en la memoria secundaria para ser usados por cualquier programa.
Este documento presenta un cuestionario sobre sistemas de archivos. Pregunta sobre la definición de un sistema de archivos, su importancia y términos clave como archivos, carpetas, programas y unidades de almacenamiento. También cubre cómo se estructuran y organizan los archivos, las operaciones que se pueden realizar con ellos y cómo se protegen.
Este documento presenta un cuestionario sobre sistemas de archivos. Pregunta sobre la definición de un sistema de archivos, su importancia y términos clave como archivos, carpetas, programas y unidades de almacenamiento. También cubre cómo se estructuran y organizan los archivos, las operaciones que se pueden realizar con ellos y cómo se protegen. El desarrollo responde cada pregunta del cuestionario definiendo estos conceptos y describiendo la estructura y jerarquía de los archivos y carpetas.
El documento habla sobre el almacenamiento y procesamiento de datos en archivos en Java. Explica que los datos en variables son temporales mientras que los archivos permiten almacenar datos de forma persistente más allá de la ejecución de un programa. Describe las clases relacionadas con el manejo de archivos como File, FileInputStream y FileWriter. Finalmente, presenta un ejemplo de cómo crear y leer datos de un archivo usando la clase Formatter.
Este documento introduce los sistemas de archivos y describe sus componentes fundamentales. Explica que los archivos permiten almacenar información de forma abstracta para que los usuarios no necesiten conocer detalles de implementación. También describe los tipos de archivos, atributos, operaciones básicas con archivos y directorios, y métodos para implementar la asignación de espacio en disco para los archivos.
Este documento contiene las respuestas de William Mesa, un estudiante de décimo grado, a un cuestionario sobre sistemas de archivos. William define términos clave como archivo, programa, documento y carpeta. Explica que los archivos se organizan de forma jerárquica en una estructura de árbol con una carpeta raíz y subcarpetas y que se pueden realizar operaciones como crear, abrir, cerrar y borrar archivos. Además, menciona que los sistemas modernos protegen los archivos mediante permisos
Sistema de archivo. rober cardenas, fabio montejoLeo10219
Este documento describe los conceptos básicos de archivos y carpetas en un sistema operativo Windows. Explica cómo crear una estructura de archivos y carpetas, mover y renombrar archivos, y eliminar elementos. También define términos como archivos, carpetas, unidades de almacenamiento y describe operaciones comunes como apertura, cierre y protección de archivos.
Conformación de un sistema de archivos gerardoleoge96
El documento habla sobre la conformación de un sistema de archivos. Explica que los archivos son bloques de datos que almacenan la información de una computadora, ya sea en forma de programas o documentos. También describe las unidades de almacenamiento como el disco duro, y cómo se organiza la información en carpetas de acuerdo a un esquema general. El objetivo es apoyar la comprensión sobre el almacenamiento y administración de archivos a través de herramientas como el explorador de Windows.
Este documento presenta las respuestas de Paula Daniela Siachoque Plazas a un cuestionario sobre sistemas de archivos. Explica que los sistemas de archivos organizan la información del computador de manera consistente mediante bloques de datos con nombres. También define términos clave como archivo, carpeta, programa y unidad de almacenamiento. Finalmente, describe algunas operaciones básicas con archivos como creación, apertura y borrado.
El documento describe los conceptos básicos de administración de archivos, incluyendo las definiciones de administrador de archivos, gestor de archivos y explorador de archivos. Explica cómo están estructurados los archivos y carpetas, y las unidades de almacenamiento. También cubre cómo medir el tamaño de los archivos, reducir el tamaño y proteger archivos. Finalmente, enumera algunos tipos comunes de archivos y sus extensiones.
Los archivos son conjuntos de bits que se almacenan en dispositivos y se identifican por un nombre y ubicación. Los archivos digitales equivalen a documentos físicos y facilitan la organización de recursos. Los archivos consisten normalmente en paquetes más pequeños de datos relacionados y su contenido depende de cómo fue diseñado el archivo.
Este documento describe los conceptos básicos de administración de archivos. Explica que un administrador de archivos proporciona una interfaz para organizar archivos y directorios, y que un explorador de archivos ofrece servicios para acceder y controlar archivos y carpetas. También define términos como archivo, carpeta, programa y unidad de almacenamiento, y describe cómo se estructuran y miden los archivos así como las operaciones básicas que se pueden realizar con ellos como lectura, escritura, apertura y cierre. Finalmente, m
1. UNIDAD 5: JAVA REGISTROS Y ARCHIVOS SECUENCIALES
TEMA 2: REGISTROS JAVA
Ya se ha visto como variables simples pueden almacenar una sola pieza de información
y como arreglos pueden almacenar un conjunto de ellas del mismo tipo y al mismo
tiempo, estos dos mecanismos pueden manejar una gran variedad de situaciones, pero
a menudo se necesita trabajar sobre datos de diversos tipos, en este caso ni variables
escalares ni arreglos son adecuados.
Para resolver estos problemas los lenguajes de programación proveen de un tipo de
dato especial llamado registros.
Un registro es una variable especial que tiene la capacidad de almacenar datos de
diferentes tipos.
Sin embargo JAVA usa en su lugar una CLASE.
Este método tiene la ventaja de que además de incluir los campos tradicionales de un
registro (en forma de atributos) también puede incorporar una serie de métodos que
permiten procesar de manera mas fácil los campos o atributos de la clase.
Ejemplo;
public class alumno{
void alumno(){};
static String nombre= new String();
static int edad;
void inicializar(){
alumno.nombre=“pepe el toro”;
alumno.edad=18; };
void desplegar(){
System.out.println(alumno.nombre);
System.out.println(alumno.edad);
};
} termina la clase Programa 21.java ;
import java.io.*;
public class prog21{
public static void main(String[] args) {
alumno.inicializar();
2. alumno.desplegar();
} cierra main
} cierra clase
public class alumno{
void alumno(){};
static String nombre= new String();
static int edad;
static void inicializar(){
alumno.nombre=“pepe el toro”;
alumno.edad=18;
};
static void desplegar(){
System.out.println(alumno.nombre);
System.out.println(alumno.edad);
};
} termina la clase
corrida:
Para indicar a “java” durante cualquier proceso que la variable a utilizar es un campo
de una clase se deberá utilizar el siguiente formato.
nomclase.nombredelcampo
TEMA 3: JAVA ARCHIVOS (INTRODUCCION)
Si bien es cierto que ya se pueden manejar gran cantidad de datos del mismo y
diferente tipo al mismo tiempo, el problema es que al terminar de ejecutarse el
programa los datos se pierden.
De esta situación nace el concepto de archivos que son medios que facilita el lenguaje
para almacenar los datos en forma permanente normalmente en los dispositivos de
almacenamiento standar.
En general es necesario entender algunos conceptos elementales de sistemas de
archivos tradicionales.
Como nota a tomar en cuenta los datos que se van almacenando en un archivo de
disco se almacenan en renglones consecutivos y cada renglón en disco se conoce como
registro del archivo favor de no confundir el concepto de registro de archivo y registro
3. o estructura como variable ya analizada son dos cosas totalmente diferentes aunque se
llamen igual.
Operaciones básicas con archivos:
1. ESCRIBIR O GRABAR: Es la operación mas elemental con un archivo consiste en
tomar un o unos datos en variables de cualquier tipo (escalar, mezcla de datos,
arreglo, estructuras) y almacenarlas en un archivo de datos en disco.
2. LEER: Operación consistente en sacar los datos del archivo en disco y mandarlo
o cargar la variable respectiva
Organización de archivos:
En general existen dos tipos de archivos:
1. Archivos Secuenciales.- En este caso los datos se almacenan en forma
consecutiva y no es posible leer (recuerdan que significa esta operación) ningún
registro (recuerdan la nota de arriba) directamente es decir para leer el registro
n, se deberá recorrer o accesar los n-1 registros anteriores.
2. Archivos Directos o Random.- Para este caso si se puede acceder o leer un
renglón n cualquiera.
Tipo de archivos:
A) En general, existen tantos tipos de archivos como tipos de datos existen es decir
existen archivos de bytes, de chars, de ints, de floats, etc.
ATENCION: Ya que se decide utilizar algún archivo especifico de datos (caracteres,
strings, formateados, registros o arreglos) solo utilizar las funciones de escritura y
lectura de ese tipo de archivo por ningún motivo mezcle funciones de lectura y
escritura de otro tipo de archivos.
Almacenamiento en archivos:
1. Modo Texto: en este caso los datos son almacenados usando código ascii y por
tanto son plenamente visibles usando cualquier editor.
2. Modo Binario: en este caso los datos son almacenados en notación hexadecimal
y por tanto se ocupa un editor binario para reconocerlos sin embargo un archivo
binario es más compacto que un archivo texto.
TEMA 4: JAVA ARCHIVOS SECUENCIALES
1. Existen además muchas otras operaciones asociadas a archivos las más
elementales son:
1.- Creación de Archivo.- En este proceso se pretende solamente crear un
archivo nuevo en disco, con su nombre, tipo y especialidad de
almacenamiento de datos apropiado.
2.- Apertura de Archivos.- En este caso se pretende abrir un archivo ya
existente en disco para procesarlo, ya sea cargar o grabar datos en sus
4. registros, o leer algún registro en especial para mandarlo a una variable de
cualquier tipo.
No confundir creación con apertura creación es un proceso que solo se
ejecuta una sola vez en la vida de un archivo, mientras que apertura
siempre se está realizando por los programas especializados en algún
proceso.
3.-Cierre de archivos: Es la operación más importante en cualquier
programa que maneje archivos o se cierra el archivo como ultima
instrucción del programa o se verá el anuncio ABORT,RETRY,FAIL.
4.-Altas en archivo.- En este proceso se carga una clase en memoria con
sus datos pertinentes y se graba la clase en el archivo en disco.
5.-Lectura de archivo.- En este proceso, se abre el archivo y se manda el
registro de disco, a una clase en memoria para su procesamiento.
6.- Consulta de archivos: En este proceso se pretende desplegar todos los
registros del archivo en disco a la pantalla ya sea consola o mejor aún, a
una pagina html
7.-Busqueda en archivos: Una de las operaciones más comunes, consiste
en que el usuario pide toda la información de algún renglón en disco,
proporcionando la información de algún campo, generalmente el campo
clave de la clase.
8.- Filtros.- En este proceso el usuario está interesado en algún conjunto
de renglones con características comunes (condición), por ejemplo todos
los alumnos de “sistemas”, o todos los empleados que ganen más de
$500.00 pesos, o todos los clientes que sean de “tijuana”, etc
9.-Modificaciones de registros o archivos: Problema muy común, donde los
datos originales ya grabados se tienen que cambiar o actualizar, por
ejemplo el nombre no era “juan” es “juana”, o la calificación no es 100 es
20, etc.
10.- Bajas de registros: también muy común este proceso por ejemplo el
alumno ya egreso, el cliente huyo, etc.
TEMA 5: GRABACION ARCHIVO SECUENCIAL JAVA
Grabación y lectura son los dos procesos más comunes con archivos en cualquier
lenguaje de programación.
Código de grabación:
Prog22.java
import java.lang.*;
import java.io.*;
public class prog22 {
public static void main(String[] args) {
5. // crear un objeto de tipo archivo
DataOutputStream archivo = null;
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre=new String("");
int edad=0;
// creando objeto teclado
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// abriendo archivo, capturando y grabando datos
try {
//* Creando y grabando a un archivo, esta larga la instrucción*/
archivo = new DataOutputStream( new
FileOutputStream("c:pfacilarchivo1.dat",true) );
System.out.println("dame clave: ");
clave = Integer.parseInt(teclado.readLine());
System.out.println("dame nombre: ");
nombre=teclado.readLine();
System.out.println("dame edad: ");
edad = Integer.parseInt(teclado.readLine());
//grabando al archivo
archivo.writeInt(clave);
archivo.writeUTF(nombre);
archivo.writeInt(edad);
archivo.close();
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
} // cierra main
} // cierra clase
Corrida:
Se usa una clase llamada FileOutputStream, especializada en archivos con muchos
métodos y constructores para crear, manipular y procesar archivos el constructor
usado solo lleva dos parámetros, el primero todo la ruta o path a donde quedara el
archivo(cuidado con no poner la doble diagonal ) y el segundo parámetro es la
palabra “true”, esto es para que el archivo se abra en modo llamado “APPEND”, es
decir que cada nuevo registro se vaya escribiendo al final del archivo, si no se pone
este parámetro(true), un nuevo registro se sobrescribiría sobre el registro anterior.
Sin embargo en el programa no se uso solo FILEOUTPUSTREAM ( solo para crear el
archivo), también se usa DATAOUTPUTSTREAM, esta segunda clase es derivada de la
anterior y comparte muchos de sus métodos, la diferencia es que fileoutputstream está
especializada en grabar y leer bytes, mientras que dataoutputstream está
especializada en grabar y leer datos formateados, observar que los métodos que uso el
objeto archivo para grabar o almacenar datos se especializan en algún tipo de dato en
especial, sus otros métodos son:
Method Summary
“void” flush”()” Flushes this data output stream.
“int”
size”()” Returns the current value of the counter “written”, the number of bytes
written to this data output stream so far.
6. “void”
write”(byte[] b, int off, int len)“
Writes “len” bytes from the specified byte array starting at offset “off” to the
underlying output stream.
“void”
write”(int b)” Writes the specified byte (the low eight bits of the argument “b”)
to the underlying output stream.
“void”
writeBoolean”(boolean v)” Writes a “boolean” to the underlying output stream
as a 1-byte value.
“void”
writeByte”(int v)“
Writes out a “byte” to the underlying output stream as a 1-byte value.
“void”
WriteBytes (String s) Writes out the string to the underlying output stream as a
sequence of bytes.
“void”
writeChar”(int v)” Writes a “char” to the underlying output stream as a 2-byte
value, high byte first.
“void”
WriteChars (String s) writes a string to the underlying output stream as a
sequence of characters.
“void”
writeDouble”(double v)“
Converts the double argument to a “long” using the “doubleToLongBits” method
in class “Double”, and then writes that “long” value to the underlying output
stream as an 8-byte quantity, high byte first.
“void”
writeFloat”(float v)” Converts the float argument to an “int” using the
“floatToIntBits” method in class “Float”, and then writes that “int” value to the
underlying output stream as a 4-byte quantity, high byte first.
“void”
writeInt”(int v)“
Writes an “int” to the underlying output stream as four bytes, high byte first.
“void”
writeLong”(long v)“
Writes a “long” to the underlying output stream as eight bytes, high byte first.
“void”
writeShort”(int v)“
Writes a “short” to the underlying output stream as two bytes, high byte first.
“void”
writeUTF (String str) writes a string to the underlying output stream using UTF-
8 encoding in a machine-independent manner.
TABLA TOMADA DEL API DE JAVA
Observar que la grabación lleva un try-catch filenotfound e ioexception, que son
obligatorios o no compila el programa.
No olvidar cerrar el archivo, con la instrucción archivo.close
TEMA 6: LECTURA ARCHIVO SECUENCIAL
El proceso de lectura de los registros de un archivo secuencial es realmente sencillo,
como lo muestra el siguiente código ejemplo;
Prog23.java:
import java.lang.*;
import java.io.*;
public class prog23 {
public static void main(String[] args) {
// crear un objeto de tipo archivo
7. DataInputStream archivo = null;
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre=new String("");
int edad=0;
try{
//* abriendo archivo para lectura */
archivo = new DataInputStream( new FileInputStream("c:pfacilarchivo1.dat") );
//leyendo archivo
while (true)
{
clave=archivo.readInt();
System.out.println(clave+" ");
nombre=archivo.readUTF();
System.out.println(nombre+" ");
edad=archivo.readInt();
System.out.println(edad+" ");
System.out.println('n');
} }
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
// cerrar archivo
archivo.close();
} // cierra main
} // cierra clase
Corrida:
Notas:
Observar en código que ahora se usan FILEINPUTSTREAM Y DATAINPUTSTREAM como
clases.
En fileinputstream solo se uso el parámetro de abrir archivo (no el true de append)
como ya se menciono estas clases se especializan en archivos secuenciales.
El ciclo de lectura se realiza con un while(true)
los métodos de DATAINPUTSTREAM SON:
Method Summary
“int” read”(byte[] b)“
8. See the general contract of the “read” method of “DataInput”.
“int”
read”(byte[] b, int off, int len)“
See the general contract of the “read” method of “DataInput”.
“boolean”
readBoolean”()“
See the general contract of the “readBoolean” method of “DataInput”.
“byte”
readByte”()“
See the general contract of the “readByte” method of “DataInput”.
“char”
readChar”()“
See the general contract of the “readChar” method of “DataInput”.
“double”
readDouble”()“
See the general contract of the “readDouble” method of “DataInput”.
“float”
readFloat”()“
See the general contract of the “readFloat” method of “DataInput”.
“void”
readFully”(byte[] b)“
See the general contract of the “readFully” method of “DataInput”.
“void”
readFully”(byte[] b, int off, int len)“
See the general contract of the “readFully” method of “DataInput”.
“int”
readInt”()“
See the general contract of the “readInt” method of “DataInput”.
String
with: BufferedReader d
= new BufferedReader(new InputStreamReader(in)); |
| “long” | readLong”()“
See the general contract of the “readLong” method of “DataInput”. |
“short”
readShort”()“
See the general contract of the “readShort” method of “DataInput”.
“int”
readUnsignedByte”()“
See the general contract of the “readUnsignedByte” method of “DataInput”.
“int”
readUnsignedShort”()“
See the general contract of the “readUnsignedShort” method of “DataInput”.
String
readUTF”()“
See the general contract of the “readUTF” method of “DataInput”.
“static”
String
readUTF”(“DataInput “in)“
Reads from the stream “in” a representation of a Unicode character string encoded in Java
modified UTF-8 format; this string of characters is then returned as a “String”.
“int”
skipBytes”(int n)“
See the general contract of the “skipBytes” method of “DataInput”.
9. TEMA 7: JAVA BUSQUEDA ARCHIVOS SECUENCIALES
Recordar que existe una serie de procesos básicos con archivos el famoso y antiguo
ABC (altas, bajas, consultas y modificaciones) con ellos.
Actualmente estos procesos o similares a ellos se llaman insertar, eliminar, editar, etc.,
en las modernas bases de datos pero esto lo analizaremos más adelante.
El primer proceso para un archivo secuencial es agregar una cantidad indefinida de
registros al archivo este proceso se resuelve o ejecutando una cantidad indeterminada
de veces el programa de grabación ya hecho o incluir un ciclo while en el mismo
programa.
Un segundo proceso también común, llamado consulta es desplegar todos los
registros del archivo a la vez problema también resuelto en el programa de lectura.
El tercer Proceso que “resolvemos” en este tema es la búsqueda de un registro
determinado, en este proceso el usuario del programa quiere que se despliegue un y
solo un registro de información, proporcionando un dato de búsqueda, generalmente la
clave del registro.
La solución es sencilla, solo tenemos que abrir el archivo para lectura, hacer un ciclo
while(true) condicionar y solo desplegar el registro cuando se cumpla la condición.
Código prog24.Java:
import java.lang.*;
import java.io.*;
public class prog24 {
public static void main(String[] args) {
// crear un objeto de tipo archivo
DataInputStream archivo = null;
//variables
int clave=0;
int clavebuscar=0;
String nombre="";
int edad=0;
// capturando clave a buscar
// creando un objeto llamado teclado especializado en capturas
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// capturando datos
try {
System.out.println("dame Clave a buscar: ");
clavebuscar = Integer.parseInt(teclado.readLine());
} catch(IOException variablerror) {System.out.println("error de captura "); }
//* abriendo archivo para lectura */
try{
archivo = new DataInputStream( new FileInputStream("c:pfacilarchivo1.dat") );
//leyendo archivo
while (true)
{
clave=archivo.readInt();
nombre=archivo.readUTF();
edad=archivo.readInt();
if (clavebuscar==clave){
System.out.println(clave+" ");
System.out.println(nombre+" ");
System.out.println(edad+" ");
System.out.println('n');}; }; }
10. catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
// cerrar archivo
archivo.close();
} // cierra main
} // cierra clase
Corrida programa java:
TEMA 8: FILTROS o CONDICIONES JAVA
Como su nombre lo indica en este proceso se pretende desplegar todo un conjunto de
renglones que cumplan con la condición por ejemplo se pide desplegar todos los
alumnos de “sistemas” o todos los empleados que sean de “sinaloa”, etc.
Filtros se usan para obtener información acerca de un subconjunto de renglones de el
archivo.
Codigo prog25.Java
import java.lang.*;
import java.io.*;
public class prog25 {
public static void main(String[] args) {
// crear un objeto de tipo archivo
DataInputStream archivo = null;
//variables
int clave=0;
String nombre="";
int edad=0;
int edadfiltro=0;
// capturando condicion
// creando un objeto llamado teclado especializado en capturas
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// capturando datos
try {
System.out.print("EDAD >= : ");
edadfiltro = Integer.parseInt(teclado.readLine());
} catch(IOException variablerror) {System.out.println("error de captura "); }
//* abriendo archivo para lectura */
try{
archivo = new DataInputStream( new FileInputStream("c:pfacilarchivo1.dat") );
//leyendo archivo
while (true)
11. {
clave=archivo.readInt();
nombre=archivo.readUTF();
edad=archivo.readInt();
if (edad >= edadfiltro){
System.out.print(clave+" ");
System.out.print(nombre+" ");
System.out.print(edad+" ");
System.out.print('n');}; }; }
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
// cerrar archivo
archivo.close();
} // cierra main
} // cierra clase
Corrida filtro:
TEMA 9: BAJA ELIMINACION ARCHIVO SECUENCIAL JAVA
Eliminar o dar de baja en un archivo secuencial, implica tener que estar procesando
dos archivos a la vez, el segundo de ellos es un archivo temporal, un algoritmo de
eliminación física quedaría como:
Procedimiento:
1.- Abrir el archivo original en modo lectura.
2.- Abrir un archivo llamado temporal en modo escritura.
3.- Iniciar un ciclo de lectura del archivo original.
3a.- Dentro del ciclo leer el primer registro.
3b.- Validar el registro si no es eliminable, se escribe al archivo temporal.
3c.- Fin de ciclo (cerrar el ciclo).
4.- Cerrar ambos archivos.
5.- eliminar el archivo original.
6.- renombrar el archivo temporal con el nombre de archivo original.
Una segunda técnica, consiste en agregar un campo de estado (status) al registro, tal
como se vio en el curso anterior:
Sin embargo el proceso de baja se tiene que realizar en un sistema de información,
para resolver este problema la respuesta es agregar un campo especial llamado status
que puede ser de tipo char, con algunos caracteres de control que se puedan cargar en
el por ejemplo una 'a' significa que está en alta, una 'b' significa que está en baja, etc.
Lo único que se tiene que hacer, es que cuando se agrega o manda el registro por
primera vez a disco, mandarlo cargado el campo de status con 'a' y estar validando
12. con if siempre este campo en cualquier proceso de búsqueda o condición o despliegue,
si se encuentra cargado con 'b' entonces solo avisar al usuario que está de baja dicho
registro.”
TEMA 10: OPERACIONES CON CAMPOS JAVA
Este es también un caso común con los elementos de un archivo, sin embargo es
también fácil de resolver.
Solo usar los dos archivos el original y el temporal y antes de grabarse al temporal
hacer la operación correspondiente, como lo muestra el siguiente ejemplo.
Prog27.java
import java.lang.*;
import java.io.*;
public class prog27 {
public static void main(String[] args) {
// crear un objeto de tipo archivo
DataInputStream archivo = null;
DataOutputStream archtemp = null;
//variables
int clave=0;
String nombre="";
int edad=0;
try {
//creando archivo temporal
archtemp = new DataOutputStream( new
FileOutputStream("c:pfaciltemporal.dat",true) );
archivo = new DataInputStream( new FileInputStream("c:pfacilarchivo1.dat") );
//leyendo archivo
while (true)
{
clave=archivo.readInt();
nombre=archivo.readUTF();
edad=archivo.readInt();
// sumando +10 a las edades
edad=edad+10;
//grabando al archivo temporal
archtemp.writeInt(clave);
archtemp.writeUTF(nombre);
archtemp.writeInt(edad); }
} catch(IOException variablerror) { }
try {
// cerrar archivos
archivo.close();
archtemp.close();
// eliminando original renombrando temporal
File file1 = new File("c:pfacilarchivo1.dat");
File file2 = new File("c:pfaciltemporal.dat");
if (file1.exists()) {file1.delete();};
file2.renameTo(file1);
// avisando
System.out.println("EDADES + 10");
} catch(IOException variablerror) {System.out.println("ERROR "); }
} // cierra main
} // cierra clase
corrida:
13. TEMA 11: EDICION REGISTROS JAVA
Editar registros significa cambiar el contenido de algunos de los campos o columnas
por nueva información o para corregir algún error de captura original o para agregar
alguna columna que no existía por modificación de la tabla o la base de datos.
La solución es similar a los temas anteriores, es decir se ocupan los dos archivos el
original y el temporal y ya sea que se modifique una sola clave o se modifiquen todos
los registros, el ejemplo que se construye va mostrando los registros del archivo y
pregunta y modifica o edita el registro pedido.
Prog28.java
import java.lang.*;
import java.io.*;
public class prog28 {
public static void main(String[] args) {
// crear un objeto de tipo archivo
DataInputStream archivo = null;
DataOutputStream archtemp = null;
//variables
int clave=0;
String nombre="";
int edad=0;
char opcion ='n';
// creando objeto teclado
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
try {
//creando archivo temporal
archtemp = new DataOutputStream( new
FileOutputStream("c:pfaciltemporal.dat",true) );
archivo = new DataInputStream( new FileInputStream("c:pfacilarchivo1.dat") );
//leyendo archivo
while (true)
{
clave=archivo.readInt();
System.out.print(clave+" ");
nombre=archivo.readUTF();
14. System.out.print(nombre+" ");
edad=archivo.readInt();
System.out.print(edad+" ");
System.out.print('n');
System.out.print("editar s/n :");
opcion=(teclado.readLine()).charAt(0);
if(opcion=='s'){
System.out.print("dame nuevo nombre: ");
nombre=teclado.readLine();
System.out.print("dame nueva edad: ");
edad = Integer.parseInt(teclado.readLine());
};
//grabando al archivo temporal
archtemp.writeInt(clave);
archtemp.writeUTF(nombre);
archtemp.writeInt(edad); }
} catch(IOException variablerror) { }
try {
// cerrar archivos
archivo.close();
archtemp.close();
// eliminando original renombrando temporal
File file1 = new File("c:pfacilarchivo1.dat");
File file2 = new File("c:pfaciltemporal.dat");
if (file1.exists()) {file1.delete();};
file2.renameTo(file1);
// avisando
System.out.println("YA SE EDITO");
} catch(IOException variablerror) {System.out.println("ERROR "); }
} // cierra main
} // cierra clase
corrida:
15. UNIDAD 6: PROGRAMACION JAVA REGISTROS Y ARCHIVOS DIRECTOS
TEMA 1: JAVA INTRODUCCION ARCHIVOS DISCOS
SE DICE QUE UN ARCHIVO ES DE ACCESO U ORGANIZACION DIRECTA CUANDO PARA
ACCEDER A UN REGISTRO N CUALESQUIERA NO SE TIENE QUE PASAR POR LOS N-1
REGISTROS ANTERIIORES.
Como se observa de esta definición los archivos directos tienen una gran ventaja (son
mucho más rápidos) cuando se comparan con los archivos de acceso u organización
secuencial estudiados en la unidad anterior.
Aunque lo anterior no quiere decir que son mejores que los secuenciales, es decir es el
propio problema planteado quien exigirá una solución u otra, por ejemplo si se quiere
construir un archivo para almacenar los datos de un guestbook, si se construye de
manera directa sería muy rápido pero si lo construimos de manera secuencial, se
podrán almacenar datos con cantidades de información más adecuados al problema.
Es decir un archivo de acceso directo tiene que tener sus registros o renglones de un
tamaño fijo o predeterminado de antemano.
En java archivos de acceso directo pertenecen a la clase RANDOMACCESSFILE esta
clase contiene muchas propiedades algunas de las cuales se muestran aquí, estas
propiedades se estarán usando mucho en esta unidad.
Un archivo de acceso directo permite posicionar el apuntador de interno de registros, a
cualquier registro determinado sin necesidad de pasar por todos los registros
anteriores, usando las siguientes funciones.
Constructor Summary
RandomAccessFile”(“File “file,” String “mode)“
Creates a random access file stream to read from, and optionally to write to, the file
specified by the “File” argument.
RandomAccessFile”(“String “name,” String “mode)“
Creates a random access file stream to read from, and optionally to write to, a file with
the specified name.
Method Summary
“void”
close”()“
Closes this random access file stream and releases any system
resources associated with the stream.
FileDescriptor
getFD”()“
Returns the opaque file descriptor object associated with this stream.
“long”
getFilePointer”()“
Returns the current offset in this file.
“long”
length”()“
Returns the length of this file.
“int”
read”()“
Reads a byte of data from this file.
“int”
read”(byte[] b)“
Reads up to “b.length” bytes of data from this file into an array of bytes.
16. “int”
read”(byte[] b, int off, int len)“
Reads up to “len” bytes of data from this file into an array of bytes.
“boolean”
readBoolean”()“
Reads a “boolean” from this file.
“byte”
readByte”()“
Reads a signed eight-bit value from this file.
“char”
readChar”()“
Reads a Unicode character from this file.
“double”
readDouble”()“
Reads a “double” from this file.
“float”
readFloat”()“
Reads a “float” from this file.
“void”
readFully”(byte[] b)“
Reads “b.length” bytes from this file into the byte array, starting at the
current file pointer.
“void”
readFully”(byte[] b, int off, int len)“
Reads exactly “len” bytes from this file into the byte array, starting at
the current file pointer.
“int”
readInt”()“
Reads a signed 32-bit integer from this file.
String
readLine”()“
Reads the next line of text from this file.
“long”
readLong”()“
Reads a signed 64-bit integer from this file.
“short”
readShort”()“
Reads a signed 16-bit number from this file.
“int”
readUnsignedByte”()“
Reads an unsigned eight-bit number from this file.
“int”
readUnsignedShort”()“
Reads an unsigned 16-bit number from this file.
String
readUTF”()“
Reads in a string from this file.
“void”
seek”(long pos)“
Sets the file-pointer offset, measured from the beginning of this file, at
which the next read or write occurs.
“void”
setLength”(long newLength)“
Sets the length of this file.
“int”
skipBytes”(int n)“
Attempts to skip over “n” bytes of input discarding the skipped bytes.
“void”
write”(byte[] b)“
Writes “b.length” bytes from the specified byte array to this file, starting
at the current file pointer.
“void”
write”(byte[] b, int off, int len)“
Writes “len” bytes from the specified byte array starting at offset “off” to
17. this file.
“void”
write”(int b)“
Writes the specified byte to this file.
“void”
writeBoolean”(boolean v)“
Writes a “boolean” to the file as a one-byte value.
“void”
writeByte”(int v)“
Writes a “byte” to the file as a one-byte value.
“void”
writeBytes”(“String “s)“
Writes the string to the file as a sequence of bytes.
“void”
writeChar”(int v)“
Writes a “char” to the file as a two-byte value, high byte first.
“void”
writeChars”(“String “s)“
Writes a string to the file as a sequence of characters.
“void”
writeDouble”(double v)“
Converts the double argument to a “long” using the “doubleToLongBits”
method in class “Double”, and then writes that “long” value to the file as
an eight-byte quantity, high byte first.
“void”
writeFloat”(float v)“
Converts the float argument to an “int” using the “floatToIntBits”
method in class “Float”, and then writes that “int” value to the file as a
four-byte quantity, high byte first.
“void”
writeInt”(int v)“
Writes an “int” to the file as four bytes, high byte first.
“void”
writeLong”(long v)“
Writes a “long” to the file as eight bytes, high byte first.
“void”
writeShort”(int v)“
Writes a “short” to the file as two bytes, high byte first.
“void”
writeUTF”(“String “str)“
Writes a string to the file using UTF-8 encoding in a machine-
independent manner.
TEMA 2: CREACION ARCHIVOS DIRECTOS JAVA
En este proceso se pretende solamente crear un archivo director en disco.
Prog29.java
import java.lang.*;
import java.io.*;
public class prog29 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
// abriendo archivo, capturando y grabando datos
18. try {
//* Creando y grabando a un archivo, esta larga la instrucción*/
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
archivo.close();
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
// avisando
System.out.println("ARCHIVO DIRECTO CREADO");
} // cierra main
} // cierra clase
corrida:
Recordar que la estructura que se uso para crear el archivo se deberá usar
siempre y con el mismo orden cuando se acceda al archivo con los procesos u
operaciones anteriormente mencionados.
Observar que es parecido a la creación de archivos secuenciales.
Lo primero que se crea es un objeto de tipo FILE que se usa como parámetro para
crear el archivo de tipo RANDOMACCESSFILE.
Respetar las dos diagonales en el path del disco duro donde quedara el archivo directo.
Como segundo paso se crea el archivo con la instrucción:
RandomAccessFile archivo=new RandomAccessFile(arch,”rw”);
Observar el doble diagonal () en el parámetro. El primer parámetro o argumento en
esta función es la unidad de disco y el nombre del archivo. El segundo parámetro o
argumento es llamado modo y es una de los varios modos que podemos usar. “r” —→
Lectura. “w” —→ Escritura. “rw” —> Crea para lectura y escritura y si ya existe,
sobrescribe. Cuando se ha finalizado de escribir al archivo se debe cerrar y esto se
hace con la instrucción: Archivo.close(); Recordar estudiar todos los métodos de la
clase RANDOMACCESFILE. TAREAS PROGRAMACION JAVA Crear archivos directos de
alumnos, proveedores, libros, productos, películas.
TEMA 3: GRABACION Y LECTURA DISCO JAVA
Como ya se menciono grabar y lectura de registros o estructuras a renglones o
registros de archivos en disco.
Estos dos procesos son los casos más comunes y frecuentes que se pueden realizar
con un archivo de disco.
19. GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO
Prog30.java
import java.lang.*;
import java.io.*;
public class prog30 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
// creando objeto teclado
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// abriendo archivo, capturando y grabando datos
try {
//* Creando y grabando a un archivo, esta larga la instrucción*/
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
System.out.println("dame clave: ");
clave = Integer.parseInt(teclado.readLine());
System.out.println("dame nombre: ");
nombre=teclado.readLine();
//dejando string en 25 caracteres
if (nombre.length() < 25)
{ for(int i=nombre.length(); i <25; i++)
nombre=nombre+" ";}
else{ nombre=nombre.substring(0,25); };
System.out.println("dame edad: ");
edad = Integer.parseInt(teclado.readLine());
// grabando al archivo
if (archivo.length()!= 0){archivo.seek( archivo.length() );};
archivo.writeInt(clave);
// y recordar que cada caracter se graba en dos bytes
archivo.writeChars(nombre);
archivo.writeInt(edad);
archivo.close();
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
} // cierra main
} // cierra clase
corrida:
Observar que es completamente similar a programa de archivos secuenciales, solo se
recomienda que las claves sigan la secuencia 0,1,2,3,4,5….
20. La primera observación es que se está usando el modo “rw”, reestudiar la clase de
modos de apertura.
Recordar que un archivo directo tiene un tamaño de registro predefinido y
es importante que dicho tamaño se respete, para el caso de las variables strings
dentro del código se están ajustando a 25 caracteres, si la string es más corta que
dicho tamaño se tendrá que ampliar con caracteres en blanco ” ”, si el tamaño es más
grande la string se tendrá que recortar con el método substring(), como se muestra en
el programa ejemplo.
También es importante recordar que java grabara cada caracter de la string usando
dos(2) bites en disco, es decir el registro ejemplo quedara grabado en disco en 58
BYTES, 50 para la string y 4 bytes por cada entero, es importante conocer el tamaño
de registros grabados en disco porque esta información se usara ampliamente en el
resto de los programas de esta unidad.
Las métodos de grabación que se están usando son:
Archivo.writeInt() y archivo.writeChars().
Recordar estudiar todos los métodos de la clase RANDOMACCESSFILE.
LECTURA CONSULTA DESPLIEGUE DE REGISTROS
prog31.java
import java.lang.*;
import java.io.*;
public class prog31 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
//recordar que un caracter son dos bytes en archivo
long tregistro=58;
long cregistros=0;
// creando objeto teclado
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// abriendo archivo, capturando y grabando datos
try {
//* Creando y leyendo archivo, esta larga la instrucción*/
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
//calulando cantidad de registros
cregistros=archivo.length()/tregistro;
for (int r=0; r < cregistros; r++)
{
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando
System.out.println(clave+" "+nombre+" "+edad);
// limpiar strings o java encadena con la siguiente
nombre="";
};
21. archivo.close();
}
catch(FileNotFoundException fnfe) { /* Archivo no encontrado */ }
catch (IOException ioe) { /* Error al escribir */ }
} // cierra main
} // cierra clase
corrida:
notas:
Primero se ocupa conocer la cantidad de registros que se encuentran almacenados en
disco, para esto primero se ocupan dos variables de tipo long tregistro y cregistros, la
cantidad de registros se obtiene con la operación y métodos de la clase
RANDOMACCESSFILE siguientes:
cregistros=archivo.length()/tregistro;
Creo que está muy claramente entendible, como se obtuvo la cantidad de registros, ya
con esta información se construye un ciclo for (puede ser cualquiera de los ciclos
vistos) para empezar a recorrer renglón tras renglón del archivo directo.
La única nota a mencionar es que para leer la string se está usando un ciclo de lectura
de 25 caracteres y recordar al final poner la string en nada =”” porque si no en la
siguiente lectura se tendrá una string encadenada a la siguiente string.
TEMA 4: BUSQUEDA ARCHIVOS JAVA
En este tema se analiza la búsqueda de un registro o renglón determinado.
En este proceso el usuario del programa quiere que se despliegue un y solo un registro
de información proporcionando un dato de búsqueda generalmente la clave del
registro.
Recordar que en esta operación se muestra la diferencia fundamental entre archivos
secuenciales y archivos directos, es decir aquí se puede accesar directamente un
registro n cualquiera.
prog32.java
import java.lang.*;
import java.io.*;
public class prog32 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
22. // observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
long tregistro=58;
// creando objeto teclado y capturando clave
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("dame clave: ");
clave = Integer.parseInt(teclado.readLine());
} catch(IOException ioe) { System.out.println(ioe); }
// abriendo archivo, leyendo
try {
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
archivo.seek(clave * tregistro);
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando
System.out.println(clave+" "+nombre+" "+edad);
// limpiar strings o java encadena con la siguiente
nombre="";
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
} // cierra main
} // cierra clase
corrida:
Como se desprende del programa usando archivo.seek() es posible posicionarse en
cualquier byte del archivo.
El formato usado seek() es:
Archivo.seek1)
;
Recordar que debemos posicionar el apuntador interno de registros, al principio o inicio
del registro que se quiere, por ejemplo en este ejemplo el inicio del registro (1 juan
perez 22) se encuentra en el byte 59, pero java inicia una lectura o una escritura en el
BYTE ANTERIOR para este caso la lectura debe tener el apuntador interno de registros
en el BYTE 58, y si se multiplica la clave 1 por el tamaño de registro 58, adivinar que
BYTE SE OBTIENE.
Como va a estar dificil que se le atine a un byte determinado, es por eso que en el
programa mejor se deja que sea el propio servidor quien calcule el byte donde
empieza un registro determinado con clave * tamaño de registro.
23. 1)
long)(clave)* tamañoderegistro
TEMA 5: FILTROS CONDICIONES JAVA
Otro problema similar al anterior es el de filtros o condiciones, es decir en muchas
ocasiones es necesario obtener información acerca de un subconjunto de renglones del
archivo.
Por ejemplo todos los estudiantes que sean mayores de 17 años, o todos los clientes
que sean de Tijuana, etc. a esto le llamamos filtros o condiciones.
También se resuelve de manera similar a los de archivos secuenciales es decir usando
un ciclo de lectura de todo el archivo e ir desplegando todos los registros que cumplan
la condición.
prog33.java
import java.lang.*;
import java.io.*;
public class prog33 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
long tregistro=58;
long cregistros=0;
int edadtemp=0;
// creando objeto teclado y capturando clave
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("edad mayor que: ");
edadtemp = Integer.parseInt(teclado.readLine());
} catch(IOException ioe) { System.out.println(ioe); }
// abriendo archivo, leyendo
try {
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
//calulando cantidad de registros
cregistros=archivo.length()/tregistro;
for (int r=0; r < cregistros; r++)
{
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando
if (edadtemp <= edad) { System.out.println(clave+" "+nombre+" "+edad);};
// limpiar strings o java encadena con la siguiente
nombre="";
};
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
} // cierra main
24. } // cierra clase
corrida:
Como se observa es un problema y una solución similar al tema anterior de
búsquedas.
TEMA 6: BAJAS O ELIMINACIONES JAVA PROGRAMACION
Eliminación o bajas es el proceso por medio del cual algunos registros del archivo son
purgados del archivo, existen dos maneras por las cuales se puede realizar ese
proceso.
En la primera manera se usan dos archivos, el archivo original y un archivo temporal,
el procedimiento o algoritmo es muy sencillo, se lee el registro del archivo original y si
no es el registro a eliminar entonces se almacena en el archivo temporal, cuando se
termina de procesar todo el archivo original, el archivo temporal solo contendrá todos
los registros que no se quisieron eliminar, ya con estos dos archivo se procede a
eliminar o borrar usando las instrucciones vistas en el capitulo anterior y se procede a
renombrar usando la instrucciones vistas sobre el archivo temporal como nuevo
archivo original.
Sin embargo en archivos directos no se puede ni se debe eliminar físicamente registros
de los archivos porque recordar que la clave del registro esta enlazada directamente a
la posición que dicho registro tiene en disco y no sería muy conveniente estarle
cambiando la matricula al alumno cada rato o el número de serie al auto, etc.
Aparte de que con esta manera de eliminar incluso físicamente los registros del archivo
es que no hay manera de recuperar esa información posteriormente.
Es por eso que otra técnica común de eliminación es incluir un campo de estado,
status o bandera o semáforo en el registro y conforme se va cargando el registro y
antes de mandarlo a disco se le agrega a dicho campo el caracter 'A' –>alta, así que
cuando se quiera una baja solo se pondría dicho campo en 'B' y todos los programas
de lectura, búsqueda y filtros deberán revisar esta campo de estado antes de hacer
algo con el registro.
TEMA 7: OPERACIONES CON CAMPOS JAVA PROGRAMACION
En este tema se analiza la manera de poder realizar operaciones o procesos con los
campos de los registros en el archivo directo, lo único importante a considerar es que
los campos del registro son en cierta medida igual que variables normales y por tanto
se pueden procesar de manera normal como lo muestra el ejemplo.
25. prog34.java
import java.lang.*;
import java.io.*;
public class prog34 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
long tregistro=58;
long cregistros=0;
// abriendo archivo, leyendo
try {
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
//calulando cantidad de registros
cregistros=archivo.length() /tregistro;
for (int r=0; r < cregistros; r++)
{
// leyendo registro
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//sumando edad + 50
edad=edad+50;
//regresando apuntador y regrabando con cambio
archivo.seek( archivo.getFilePointer() -tregistro);
archivo.writeInt(clave);
archivo.writeChars(nombre);
archivo.writeInt(edad);
nombre="";
};
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
// avisando
System.out.println("YA TERMINE DE SUMAR");
} // cierra main
} // cierra clase
corrida prog33
como se observa la solución es muy sencilla solo se ocupa:
26. 1.- leer fread() el registro, esto mueve el apuntador al siguiente registro.
2.- modificar registro
3.- regresar a posición anterior con seek()
4.- grabar el registro corregido
y no se ocupan los dos archivos como en el caso secuencial.
TEMA 8: JAVA EDICION MODIFICACION DE REGISTROS
Modificar o editar un registro es uno de los procesos más comunes con archivos en
disco, generalmente después de un fuerte proceso de captura de registros, una
revisión o consulta general muestra muchos de ellos con errores de captura.
La primera parte del programa es el programa normal de búsqueda que ya se
construyo en temas anteriores, pero al desplegar el registro se deberá construir de
preferencia un switch() (tarea) que incluya los datos a modificar del registro.
La segunda parte del programa toma los datos, los almacena en el registro en
memoria luego se posiciona en el registro en disco a modificar con seek() y se
regraban con write().
Prog35.java
import java.lang.*;
import java.io.*;
public class prog35 {
public static void main(String[] args) {
// creando e inicializando los campos del registro
// observar que se debe usar clases numericas apropiadas
int clave=0;
String nombre="";
int edad=0;
long tregistro=58;
// creando objeto teclado y capturando clave
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("dame clave editar: ");
clave = Integer.parseInt(teclado.readLine());
} catch(IOException ioe) { System.out.println(ioe); }
// abriendo archivo, leyendo
try {
File arch=new File("c:ajavaarchivo2.dat");
RandomAccessFile archivo=new RandomAccessFile(arch,"rw");
archivo.seek(clave * tregistro);
clave=archivo.readInt();
//leyendo string
for(int i = 0; i < 25; ++i)
{ nombre += archivo.readChar(); };
edad=archivo.readInt();
//desplegando registro viejo
System.out.println(clave+" "+nombre+" "+edad);
System.out.print("NUEVO NOMBRE: ");
nombre=teclado.readLine();
//dejando string en 25 caracteres
if (nombre.length() < 25)
27. { for(int i=nombre.length(); i <25; i++)
nombre=nombre+" ";}
else{ nombre=nombre.substring(0,25); };
System.out.print("NUEVA EDAD: ");
edad = Integer.parseInt(teclado.readLine());
// regresando apuntado y regrabando
archivo.seek( archivo.getFilePointer() -tregistro);
archivo.writeInt(clave);
archivo.writeChars(nombre);
archivo.writeInt(edad);
nombre="";
archivo.close();
} catch(FileNotFoundException fnfe) { }
catch (IOException ioe) { }
} // cierra main
} // cierra clase
Corrida
La única instrucción nueva en este tema es getfilepointer() que se usa para conocer el
byte o posición donde se encuentra actualmente el apuntador o puntero interno del
archivo, recordar que cuando se leyó el registro en el proceso de búsqueda el
apuntador interno se movió hasta el fin del registro por eso cuando se quiere regrabar
de nuevo se uso un seek(pointer - tregistro) para regresarse al principio del registro y
regrabar.