Acceso secuencial

Acceso secuencial De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Este artículo o sección necesita ref

Views 167 Downloads 2 File size 921KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Acceso secuencial De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar al autor principal del artículo en su página de discusión pegando: {{subst:Aviso referencias|Acceso secuencial}} ~~~~

En ciencias de la computación, el acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial(un registro a la vez). El acceso secuencial es a veces la única forma de acceder a los datos, por ejemplo en una cinta de casete. También puede ser el método de acceso elegido, para simplemente procesar una secuencia de datos en orden. En las estructuras de datos, se dice que una estructura tiene acceso secuencial si solo podemos visitar los valores contenidos en un determinado orden. El ejemplo trivial, es la lista enlazada. DEFINICION DE ACCESO SECUENCIAL Lectura o escritura de datos en forma secuencial, o sea, uno tras otro. Contrario al acceso aleatorio, donde es posible leer cualquier posición sin tener que pasar por las que están detrás.

Archivos Enviado por lcamachog Anuncios Google Curso de Programación Diseño y gestión de aplicaciones orientadas a objetos. Infórmate! www.seas.es

Back Tones de Tigo Activa los Back Tones que quieras y contagia tu música www.tigomusica.com.bo

Embedded Tools & Consult RTOS,Compiler,Debugger,JTAG Debugger,Flasher,Starter Kits www.innisintl.com

INDICE: QUE SON ARCHIVOS INTRODUCCIÓN A LOS ARCHIVOS

CARACTERÍSTICAS CLASIFICACION TIPOS DE ARCHIVOS SEGÚN SU FUNCION SEGÚN SUS ELEMENTOS ACCESO A LOS ARCHIVOS TIPOS DE ACCESO A LOS ARCHIVOS OPERACIONES GENERALES QUE SE REALIZAN SOBRE UN ARCHIVO. ORGANIZACIÓN DE LOS ARCHIVOS. ENFOQUES GENERALES PARA LA ORGANIZACIÓN DE ARCHIVOS ARCHIVOS SECUENCIALES ARCHIVOS DE TEXTO ARCHIVOS INDIZADOS ARCHIVOS DISPERSOS. MEDIDAS DE UTILIZACIÓN DE LOS ARCHIVOS DEFINICIONES. BIBLIOGRAFIA 1. – QUE SON ARCHIVOS. Los archivos también denominados ficheros (file); es una colección de información (datos relacionados entre sí), localizada o almacenada como una unidad en alguna parte de la computadora. Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones. 1.1. - INTRODUCCIÓN A LOS ARCHIVOS. Los archivos como colección de datos sirve para la entrada y salida a la computadora y son manejados con programas. Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta dinámico y por esto en un registro se deben

especificar los campos, él número de elementos de un arrays (o arreglo), el número de caracteres en una cadena; por esto se denotan como "Estructuras Estáticas". En los archivos no se requiere de un tamaño predeterminado; esto significa que se pueden hacer archivos de datos más grandes o pequeños, según se necesiten. Cada archivo es referenciado por su identificador (su nombre.). 1.2. - CARACTERÍSTICAS DE LOS ARCHIVOS Las principales características de esta estructura son: Independencia de las informaciones respecto de los programas La información almacenada es permanente Un archivo puede ser accedido por distintos programas en distintos momentos Gran capacidad de almacenamiento. 1.3. - CLASIFICACION DE LOS ARCHIVOS Los archivos se clasifican según su uso en tres grupos: Permanentes o Maestros: Estos contienen información que varia poco. En algunos casos es preciso actualizarlos periódicamente. De Movimientos Se cercan para actualizar los archivos maestros. Sus registros son de tres tipos: alta, bajas y modificaciones. De Maniobra o Trabajo. Tienen una vida limitada, normalmente menor que la duración de la ejecución de un programa. Su utilizan como auxiliares de los anteriores. 1.4. - TIPOS DE ARCHIVOS

Los elementos de un archivo pueden ser de cualquier tipo, simples o estructurados o según su función. 1.4.1. - SEGÚN SU FUNCION. Se define por: a.- Archivos Permanentes: Son aquellos cuyo registros sufren pocas o ninguna variación a lo largo del tiempo, se dividen en: Constantes: Están formados por registros que contienen campos fijos y campos de baja frecuencia de variación en el tiempo. De Situación: Son los que en cada momento contienen información actualizada. Históricos: Contienen información acumulada a lo largo del tiempo de archivos que han sufridos procesos de actualización o bien acumulan datos de variación periódica en el tiempo. b.- Archivos de Movimiento Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algún campo común en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. c.- Archivo de Maniobra o Transitorio Son los archivos creados auxiliares creados durante la ejecución del programa y borrados habitualmente al terminar el mismo. 1.4.2. – SEGÚN SUS ELEMENTOS. Los principales archivos de este tipo son: Archivo de Entrada: Una colección de datos localizados en un dispositivo de entrada.

Archivo de Salida: Una colección de información visualizada por la computadora. Constantes: están formados por registros que contienen campos fijos y campos de baja frecuencia de variación en el tiempo. De Situación: son los que en cada momento contienen información actualizada. Históricos: Contienen información acumulada a lo largo del tiempo de archivos que han sufrido procesos de actualización, o bien acumulan datos de variación periódica en el tiempo. Archivos de Movimiento o Transacciones: Son aquellos que se utilizan conjuntamente con los maestros (constantes), y contienen algún campo común en sus registros con aquellos, para el procesamiento de las modificaciones experimentados por los mismos. Archivos de Maniobra o Transitorios: Son los archivos auxiliares creados durante la ejecución del programa y borrados habitualmente al terminar el mismo. - SEGÚN SUS ELEMENTOS Los principales archivos de este tipo son: Archivo de Entrada, una colección de datos localizada en un dispositivo de entrada. Archivo de Salida, una colección de información visualizada por la computadora. Archivo de Programa, un programa codificado en un lenguaje especifico y localizado o almacenado en un dispositivo de almacenamiento. Archivo de Texto, una colección de caracteres almacenados como una unidad en un dispositivo de almacenamiento. 2. - ACCESO A LOS ARCHIVOS

Se refiere al método utilizado para acceder a los registros de un archivo prescindiendo de su organización. Existen distintas formas de acceder a los datos: Secuenciales; los registros se leen desde el principio hasta el final del archivo, de tal forma que para leer un registro se leen todos los que preceden. Directo; cada registro puede leerse / escribirse de forma directa solo con expresar su dirección en el fichero por él numero relativo del registro o por transformaciones de la clave de registro en él numero relativo del registro a acceder. Por Índice; se accede indirectamente a los registros por su clave, mediante consulta secuenciales a una tabla que contiene la clave y la dirección relativa de cada registro, y posterior acceso directo al registro. Dinámico; es cuando se accede a los archivos en cualquier de los modos anteriormente citados. La elección del método esta directamente relacionada con la estructura de los registros del archivo y del soporte utilizado. 2.1. - TIPOS DE ACCESOS Acceso Secuencial. Exige el tratamiento de elemento, para esto es necesario una exploración secuencial comenzando desde el primer momento (Pascal permite este acceso) Secuenciales: archivo de texto que debe ser leído del principio hasta el final. Acceso Directo. Permite procesar o acceder a un elemento determinado y referencia directamente por su posición en el soporte de almacenamiento (Turbo Pascal permite este acceso. Aleatorios: es un archivo con registros de un mismo largo. Un programa puede accesar directamente cualquier registro sin tener que leer los registros previos.

Binarios: es un archivo que lee byte por byte sin asumir ninguna estructura. Los archivos Binarios no son un nuevo tipo de archivo, pero si una nueva forma de manipular cualquier tipo de archivo. Las técnicas de archivo binarios permiten leer o cambiar cualquier byte de un archivo. Son herramientas extremadamente potentes, pero como toda herramienta potente debe manejarse con cuidado Entre otras características, a las técnicas de archivo binario no les preocupa los caracteres EOF intercalados (Control+Z = Chr$(26)) que pueda tener un archivo. Ejemplo Open NombreArchivo for Binary as #NumeroArchivo. Instrucciones para manejar archivos OPEN: reserva un espacio del buffer para la data que moverá entre el programa y los archivos. La estructura es: OPEN filespec FOR {Append|Binary|Input|Outuput| Random} As #filenumber Por ejemplo: OPEN "C:\Windows\AddrBook.ini" FOR Input As #1 Filespec: Es la localización de archivo en el que se trabajará, incluyendo usualmente el drive y path. "C:\Windows\AddrBook.ini" {Append| Binary| Input| Outuput| Random} El programador tiene que seleccionar uno. Binary y Random se utiliza para archivos binarios y aleatorios. Append, Input y Output son usados con archivos secuenciales. Un archivo secuencial no puede ser abierto para leer y escribir simultaneamente. Output es usado para escribir en el archivo. Input es usado para leer del archivo. Append es usado para colocar data al final de un archivo exitente.

#filenumber: es necesario asignar un número al archivo. El número puede estar en el rango de #1 a #511 y es usado por Visual Basic para identificar el archivo. CLOSE: para cerrar un archivo. La estructura es: CLOSE #filenumber Por ejemplo: CLOSE #1 WRITE: envia data del programa al archivo secuencial. La estructura es: WRITE #filenumber, [OutputList] Por ejemplo: WRITE #1, UserName, UserCompany, SerialNumber WRITE es la operación opuesta al INPUT. Las expresiones en el OutputList son separadas por comas. WRITE inserta comillas y comas a la data que envia al archivo. INPUT: lee data del archivo. La estructura es: INPUT #filenumber, InputList Por ejemplo: INPUT #1, UserName, UserCompany, SerialNumber Declaración y asignación de archivos La declaración de un archivo con tipo se efectúa con la ayuda de las palabras reservadas file of. El procedimiento de asignación es idéntico al utilizado anteriormente. Ejemplo: Type datos = record

clave : integer; nombre : string[30]; puesto : string[20]; sueldo : real; estado : boolean; {true activo,false baja lógica} end; Var archivo:file of datos; begin Assign(archivo,'empleado.dat'); SISTEMA DE MANEJO DE ARCHIVOS. Tiene las siguientes funciones: Controla los datos en almacenamiento secundario [ ] Proporciona al usuario una abstracción de cómo se manipulan los datos internamente. [ ] Proporciona independencia de E/S con los dispositivos [ ] Soporte de compartición, protección, recuperación de archivos y posibles caídas del sistema. [ ] Transmisión de datos de memoria principal a secundaria.[ ] Los archivos de una empresa pueden almacenarse en diferentes dispositivos. Todos los archivos se pueden almacenar por medio de directorios, que no son otra cosa más que tablas de símbolos de archivo, los directorios se pueden utilizar de dos formas: DIRECTORIO DE NIVEL ÚNICO O DIRECTORIO PLANO

Con este método, se almacenan todos los archivos en un solo nivel, este método en sistemas donde el volumen de archivos no es grande.[ ] DIRECTORIO JERARQUICO Los archivos son almacenados por medio de directorios, esta clasificación se de acuerdo a la conveniencia del usuario o de la empresa. [ ] .La estructura tiene una forma de árbol con raíz, este método es el más utilizado debido a que la revisión o búsqueda se realiza de forma sencilla. Para accesar a los archivos que se almacenan en un sistema jerárquico, el usuario debe indicar el o los directorios que se deben recorrer para localizar el archivo deseado, a esto se le denomina ruta de acceso del archivo. La ruta de acceso puede ser de dos formas: Ruta absoluta.- Este tipo de ruta de acceso inicia siempre con una diagonal invertida [ ] C:\Edit c:\SOS\sistemas\report.txt Ruta relativa.- Este tipo de ruta de acceso realiza la búsqueda del archivo en el directorio de trabajo actual, si el archivo no se localiza aquí, el S.O. lo buscará en los directorios especificados en el PATH de un archivo con extensión .BAT. C:\Edit report.txt 2.2. - OPERACIONES GENERALES QUE SE REALIZAN SOBRE UN ARCHIVO. Las operaciones generales que se realizan son: Creación. Escritura de todos sus registros. Consulta. Lectura de todos sus registros. Actualización. Inserción supresión o modificación de algunos de sus registros

Clasificación. Reubicación de los registros de tal forma que queden ordenados según determinados criterios. Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba. 3. - ORGANIZACIÓN DE LOS ARCHIVOS. Los archivos se encuentran organizados lógicamente como una secuencia de registros de varias longitudes diferentes. Los archivos de registros de longitud fija: son los que almacenan la información en los archivos mediante un encabezado y luego se introducen uno a uno los registros ubicados en posiciones consecutivas. Los registros de longitud variable: es el almacenamiento de registros de varios tipos en un archivo y permite uno o más campos de longitudes variables y dichos campos pueden ser repetidos. La longitud de los registros debe estar definida correctamente para poder leer y escribir de forma efectiva. 3.1. - ENFOQUES GENERALES PARA LA ORGANIZACIÓN DE ARCHIVOS. Los enfoques son: 1. - Enfoque de acceso secuencial: Se refiere al procesamiento de los archivos de acuerdo con el orden especifico. Ejemplo archivo secuenciales y de texto. 2. - Enfoque de acceso Directo Permite recuperar registros individuales sin leer otros registros del archivo, ejemplos archivos indizados. 3.2. - ARCHIVOS SECUENCIALES. Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros están organizados en forma de una lista y recuperarlos y procesarlos uno por uno de principio a fin.

Rudimentos de los archivos Secuenciales; dependiendo del dispositivo de almacenamiento utilizado el archivo se puede mostrar el usuario como si fuera un sistema secuencial. Al finalizar un archivo secuencial se denota con una marca de fin de archivo. (End end-of-file) El usuario de un archivo secuancial puede ver los registros en un orden secuancial simple. La única forma de recuperar registros es comenzar al principio y extraerlos en el orden contemplado. Cuestiones de programación; la manipulación de los archivos se hace en el contexto de la programación en un lenguaje por procedimientos de alto nivel. Estos lenguajes tienden a expresar la manipulación de archivos mediante subrutinas que se definen como parte del lenguaje formal o se incluyen como extensiones del lenguaje en una biblioteca estándar. La mayor parte de los lenguajes por procedimiento de alto nivel cuenta con características que ayudan a detectar la marca de fin de archivo. 3.3. -ARCHIVOS DE TEXTO. También conocidos como (Slream File) son utilizados para almacenar documentos que consisten en texto; En ellos, cada registro es un solo símbolo o código de control. El leer estos archivos recibimos la información en orden secuencial en el que aparece cuando lo vemos en un monitor. Los archivos de texto son una secuencia de líneas separadas por marcas de fin de línea. Rudimentos de los archivos de textos; El usuario escribe los archivos de textos mediante un procesador de palabras que le permitirá almacenar la información pero no estrictamente en forma secuencial.

El procesador también nos permite desplazarnos por todo el bloque de información y permitirnos realizar modificaciones. Mientras el usuario avance rápidamente en la lectura de registro lograra ver mas archivos. Cuestiones de programación; Casi todos los entornos de programación por procedimientos de alto nivel cuentan con subrutinas para manipular los archivos de texto. Estas subrutinas pueden formar parte de la definición formal del lenguaje o que se ofrezca en biblioteca como extensiones del mismo. 3.4. - ARCHIVOS INDIZADOS. Es la aplicación de incluir índices en el almacenamiento de los archivos; de esta forma nos será más fácil buscar algún registro sin necesidad de ver todo el archivo. Un índice en un archivo consiste en un listado de los valores del campo clave que ocurren en el archivo, junto con la posición de registro correspondiente en el almacenamiento masivo. Fundamento de los Índices a.- La colocación de un listado al inicio del archivo: para la identificación del contenido. b.- La presentación de un segundo índice: para reflejar la información de cada punto principal del índice anterior. c.- La actualización de los índices: Cuando se insertan y eliminan archivos, es preciso actualizar los índices para evitar contratiempos actualizando un archivo. d.- La organización de un índice: Nos evita examinar archivo por archivo para recuperar algún registro buscado; por lo tanto ahorraríamos tiempo si tenemos una adecuado organización de los índices. Cuestiones de Programación

Algunos lenguajes de alto nivel cuentan con subtítulos para manipular los archivos de un registro indizado. Valiéndose de las subrutinas es posible escribir programas sin tener que preocuparse por la estructura real del sistema de índices que se aplique. 3.5. - ARCHIVOS DISPERSOS. También llamados (Hashed Files) representan un sistema de almacenamiento de archivos que solo ofrece acceso directo, y permiten calcular la posición de un registro en el almacenamiento masivo. Rudimentos de los archivos dispersos. El usuario debe dividir el área de almacenamiento asignando al archivo en varias secciones llamadas cubetas para poder ingresar los datos. La distribución de la información en las cubetas es problemática debido a que la estructura de los archivos es dispersa. Dentro de los archivos se presentan colisiones de información debido al agrupamiento de los registros ingresados. Cuestiones de programación. Casi ninguno de los lenguajes de programación por procedimientos en la actualidad ofrece implantaciones directas de archivos dispersos; esto es debido a las cuestiones dependientes de la aplicación implicadas en el diseño de estos archivos. 4. -MEDIDAS DE UTILIZACIÓN DE LOS ARCHIVOS. Para utilizar un archivo debemos tener en cuenta: 1. - Índice de Volatilidad; Un archivo es volátil cuando tiene un alto porcentaje de adiciones y supresiones debido al ingreso o eliminación de registros respecto al numero promedio de registros que haya en el archivo.

2. - Índice de Actividad; Un archivo es activo cuando tiene un alto porcentaje de utilidad sea de actualización o consulta en un periodo de tiempo fijo respecto al numero promedio de registro que se encuentran en el archivo. El índice de actividad suele emplearse para saber si un archivo puede explotarse como una organización secuencial o relativa. Archivos de acceso directo (con tipo) Los archivos tipeados (con tipo), también llamados archivos binarios, contienen datos de tipo simple o estructurado, tales como integer, real , record, etc., excepto otro tipo de archivos. Los archivos con tipos están estructurados en elementos o registros (record) cuyo tipo puede ser cualquiera. A los elementos de estos archivos se accede directamente, al no situarse éstos en posiciones físicamente consecutivas, sino en posiciones lógicas. Esta es la razón por la cual se les denomina archivos de acceso aleatorio o directo. Los elementos de los archivos aleatorios son de igual tamaño y el término acceso directo significa que es posible acceder directamente a un elemento con solo especificar su posición 5. - DEFINICIONES. Los más utilizados en el desarrollo del tema son: Archivo (Fichero): Conjunto de información estructurada en unidades de acceso denominada registro. Registros. Estructura de datos formada por uno o más elementos denominados "Campos" y estos pueden estar compuestos a su vez por "subcampos". Claves:

Se denomina a un campo especial del registro que sirve para identificarlo Bloque: Es la cantidad de información que se transfiere en cada operación de lectura o escritura sobre un archivo. Campo: Es cada uno de los diferentes datos que constituyen un registro lógico. BIBLIOGRAFIA 1.- Estructura de Datos en Pascal, Autor Aarón M. Tenenbaum, Moshe J. Augentein. Primera edición. 2.- Diseño y Administración de Base de Datos Gary W. Hansen, James V. Hansen, Segunda Edición. 3.- Guía de Estructura y Procesamiento de Datos Profesor David López, Segundo semestre U.N.I.R. (Maracaibo). 4.5.- http://www2.ing.puc.cl/iic1102/materia/cap10.htm 6.http://www.uady.mx/sitios/matemati/enlinea/admin_arch/ma teriales/material1.html 7.http://coqui.lce.org/cadiaz/CEDU5120V/Contenido/ArchExt.h tm 8.http://www.itlp.edu.mx/publica/tutoriales/pascal/u8_8_8.ht ml

Acceso secuencial a archivos Visual Studio .NET 2003 El uso de System.IO es el método recomendado para crear archivos de texto, pero si necesita utilizar métodos de creación de archivos de texto más antiguos, en esta sección se muestra cómo hacerlo. El acceso secuencial funciona mejor cuando se desea procesar archivos compuestos únicamente de texto, como los archivos creados con un editor de texto habitual, y no archivos en los que los datos se dividen en una serie de registros. El acceso secuencial no es adecuado para almacenar largas series de números, puesto que cada número se almacena como una cadena de caracteres. Así, un número de cuatro dígitos necesitaría cuatro bytes de almacenamiento en lugar de los dos bytes que se necesitan para almacenar el mismo número como un entero. En esta sección Abrir archivos para acceso secuencial Describe cómo obtener acceso para la entrada, salida y adición de caracteres dentro de un archivo. Editar archivos abiertos para acceso secuencial Explica cómo utilizar Line Input, InputString e Input para editar archivos. Escribir cadenas para archivos de acceso secuencial Explica cómo utilizar las funciones Print y Write para almacenar cadenas en archivos de texto. Secciones relacionadas Acceso a archivos con FileSystemObject Describe cómo crear objetos, tener acceso a sus propiedades y utilizar los métodos adecuados.

Abrir archivos para acceso secuencial Visual Studio .NET 2003 Cuando se abre un archivo para acceso secuencial, se debe especificar si se van a escribir caracteres en el archivo (modo Input), si se van a extraer caracteres del archivo (modo Output) o si se van a anexar caracteres al archivo (modo Append). Para abrir un archivo para acceso secuencial



Utilice FileOpen (Función) con la siguiente sintaxis: Copiar

FileOpen(FileNumber, FileName, OpenMode.Input) Cuando se abre un archivo secuencial para Input, el archivo ya debe existir; de lo contrario, se producirá un error. No obstante, cuando se intenta abrir un archivo inexistente para Output o Append, la instrucción FileOpen primero crea el archivo y a continuación lo abre. Una vez que se abre un archivo para una operación Input, Output o Append, debe cerrarse con la instrucción FileClose (Función) antes de volver abrirlo para otro tipo de operación. Nota de seguridad Al escribir en archivos, si el archivo en el que intentan escribir no existe, es posible que algunas aplicaciones necesiten crearlo. Para hacerlo así, necesitan

permiso para el directorio en el que se creará el archivo. No obstante, si el archivo ya existe, la aplicación sólo necesita permiso Write para el propio archivo. Siempre que sea posible, es más seguro crear el archivo durante la implementación y conceder permiso Write sólo para ese archivo, en lugar de hacerlo para todo el directorio. También es más seguro escribir datos en directorio de usuarios que en el directorio raíz o en el directorio Archivos de programa. Vea también Acceso secuencial a archivos | Editar archivos abiertos para acceso secuencial | Acceso a archivos con funciones de Visual Basic en tiempo de ejecución | FileOpen (Función) | Acceso aleatorio a archivos | Acceso binario a archivos | Escribir cadenas para archivos de acceso secuencial

Editar archivos abiertos para acceso secuencial Visual Studio .NET 2003 Para editar un archivo, primero debe leer su contenido a variables de programa, después cambiar las variables y finalmente volver a escribir las variables en el archivo. En las siguientes secciones se describe como se editan los registros abiertos para acceso secuencial. Para leer cadenas de archivos

1. Recupere el contenido de un archivo de texto abriéndolo para Input. 2. Utilice las funciones LineInput, InputString o Input para copiar el archivo a variables de programa.

Visual Basic proporciona instrucciones y funciones que leen y escriben archivos secuenciales carácter a carácter o línea a línea. Por ejemplo, el siguiente fragmento de código lee un archivo línea a línea:

Copiar Dim LinesFromFile, NextLine As String, FileNum As Integer Do Until EOF(FileNum) Nextline = LineInput(FileNum) LinesFromFile = LinesFromFile & NextLine & Chr(13) & Chr(10) Loop Aunque la función LineInput reconoce el fin de una línea cuando llega a la secuencia retorno de carro y de salto de línea, no incluye esa secuencia cuando lee la línea en la variable. Si desea conservar el retorno de carro y el saldo de línea, el código deberá agregarlos. Puede utilizar la función InputString para copiar un número especificado de caracteres desde un archivo a una variable, siempre que la variable sea lo bastante grande. Por ejemplo, el siguiente código utiliza InputString para copiar el número de caracteres de CharCount a una variable: Copiar

LinesFromFile = InputString(FileNum, CharCount) También puede utilizar la función Input, que lee una lista de números y expresiones de cadena desde un archivo. Por ejemplo, para leer una línea de un archivo de listas de distribución, puede utilizar las siguientes instrucciones: Copiar

Input(FileNum, fname) Input(FileNum, lname) Input(FileNum, street) Input(FileNum, city) Input(FileNum, state) Input(FileNum, zip) Vea también Acceso secuencial a archivos | Abrir archivos para acceso secuencial | Acceso a archivos con funciones de Visual Basic en tiempo de ejecución | FileOpen (Función) | Acceso aleatorio a archivos | Acceso binario a archivos | Escribir cadenas para archivos de acceso secuencial

Escribir cadenas para archivos de acceso secuencial Visual Studio .NET 2003 Puede agregar datos en forma de cadenas a archivos existentes mediante Print (Función) o en forma de números y expresiones de cadena mediante la función Write (Función). Para escribir cadenas en archivos

1. Utilice FileOpen (Función) para abrir un archivo de texto para Output o Append. 2. Utilice la función Print para escribir las cadenas en el archivo como en el

siguiente ejemplo, que un editor de texto puede utilizar para copiar el contenido de un cuadro de texto en un archivo:

Copiar Print(FileNum, TheBox.Text) Visual Basic también admite la función Write, que escribe una lista de números y expresiones de cadena en un archivo. Separa automáticamente cada expresión mediante una coma y pone entre comillas las expresiones de tipo String, como se ilustra en el siguiente código:

Copiar Dim AnyString As String, AnyNumber, FileNum As Integer AnyString = "AnyCharacters" AnyNumber = 23445 Write(FileNum, AnyString, AnyNumber) El segmento de código anterior escribe dos expresiones en el archivo especificado por FileNum. El primero contiene una cadena, y el segundo el número 23445. En consecuencia, Visual Basic escribe los siguientes caracteres (incluida la puntuación) en el archivo:

Copiar "AnyCharacters",23445 Nota Si está realizando el mantenimiento de una base de datos mediante Write e Input con acceso secuencial, considere la posibilidad de cambiar a FilePutObject y

FileGetObject con acceso aleatorio o binario; ambos tipos de acceso son más adecuados para datos en forma de registros. Una de las principales diferencias entre Print y Write es que Print da formato a la cadena, mientras que Write no. Por este motivo, Print no encierra entre comillas la cadena, que tiene el formato que el usuario desea ver, mientras que Write sí. Utilice una función que escriba cada cadena en una línea nueva, por ejemplo PrintLine o WriteLine si requiere cadenas separadas por líneas. Vea también Acceso secuencial a archivos | Abrir archivos para acceso secuencial | Editar archivos abiertos para acceso secuencial | Acceso a archivos con funciones de Visual Basic en tiempo de ejecución | Acceso aleatorio a archivos | Acceso binario a archivos | Print, PrintLine (Funciones) | Write, WriteLine (Funciones) | LineInput (Función)

Código de: Leer archivo secuencial Ejemplos prácticos para la programación en java. Visualiza el código fuente o descárgalo directamente a tu PC. Estes ejemplos son básicos para la programar en java y puramente orientativos. Esperemos que te ayuden. Descripción: Este programa lee un archivo de objetos en forma secuencial y muestra cada uno de los registros. Autor:Casidiablo Web:http://casidiablo.blogspot.com

Nombre

4035

Descar gar

LeerArchivoSecuencial. 6788 java

Descar gar

1IUBanco.java 2

Tama ño

3RegistroCuentas.java

1699

Ejemplos

Descar gar

Fichero: IUBanco.jav a 1 // Una GUI reutilizable para los ejemplos de este capítulo. 2 import java.aw t.*; 3 import javax.sw ing.*; 4 public class IUBanco extends JPanel 5{ 6 // texto de las etiquetas para la GUI 7 protected final static String nombres[] = { "Número de cuenta", 8 "Primer nombre", "Apellido", "Saldo", "Monto de la transacción" }; 9 10 // componentes de GUI; protegidos para el acceso futuro de las subclases 11 protected JLabel etiquetas[]; 12 protected JTextField campos[]; 13 protected JButton hacerTarea1, hacerTarea2; 14 protected JPanel panelInternoCentro, panelInternoSur; 15 16 protected int tamanio; // número de campos de texto en la GUI 17 18 // constantes que representan a los campos de texto en la GUI 19 public static final int CUENTA = 0, PRIMERNOMBRE = 1, APELLIDO = 2, 20 SALDO = 3, TRANSACCION = 4;

1 // Una GUI reutilizable para los ejemplos de este capítulo. 2 import java.awt.*; 3 import javax.swing.*; 4 public class IUBanco extends JPanel 5{ 6

// texto de las etiquetas para la GUI

7

protected final static String nombres[] = { "Número de cuenta",

8

"Primer nombre", "Apellido", "Saldo", "Monto de la transacción" };

9 10 // componentes de GUI; protegidos para el acceso futuro de las subclases 11

protected JLabel etiquetas[];

12

protected JTextField campos[];

13

protected JButton hacerTarea1, hacerTarea2;

14

protected JPanel panelInternoCentro, panelInternoSur;

15 16

protected int tamanio; // número de campos de texto en la GUI

17 18

// constantes que representan a los campos de texto en la GUI

19

public static final int CUENTA = 0, PRIMERNOMBRE = 1, APELLIDO = 2,

20

SALDO = 3, TRANSACCION = 4;

21 22 // Configurar GUI. El argumento miTamanio del constructor determina el número de 23

// filas de componentes de GUI.

24

public IUBanco( int miTamanio )

25

{

26

tamanio = miTamanio;

27

etiquetas = new JLabel[ tamanio ];

28

campos = new JTextField[ tamanio ];

29 30

// crear etiquetas

31

for ( int cuenta = 0; cuenta < etiquetas.length; cuenta++ )

32

etiquetas[ cuenta ] = new JLabel( nombres[ cuenta ] );

33 34

// crear campos de texto

35

for ( int cuenta = 0; cuenta < campos.length; cuenta++ )

36 37

campos[ cuenta ] = new JTextField();

38

// crear panel para distribuir etiquetas y campos

39

panelInternoCentro = new JPanel();

40

panelInternoCentro.setLayout( new GridLayout( tamanio, 2 ) );

41 42

// adjuntar etiquetas y campos a panelInternoCentro

43

for ( int cuenta = 0; cuenta < tamanio; cuenta++ ) {

44

panelInternoCentro.add( etiquetas[ cuenta ] );

45

panelInternoCentro.add( campos[ cuenta ] );

46

}

47 48

// crear botones genéricos; sin etiquetas ni manejadores de eventos

49

hacerTarea1 = new JButton();

50

hacerTarea2 = new JButton();

51 52

// crear panel para distribuir los botones y adjuntarlos

53

panelInternoSur = new JPanel();

54

panelInternoSur.add( hacerTarea1 );

55

panelInternoSur.add( hacerTarea2 );

56 57

// establecer esquema de este contenedor y adjuntarle los paneles

58

setLayout( new BorderLayout() );

59

add( panelInternoCentro, BorderLayout.CENTER );

60

add( panelInternoSur, BorderLayout.SOUTH );

61 62 63

validate(); // validar esquema

64

} // fin del constructor

65 66

// devolver referencia al botón de tarea genérico hacerTarea1

67

public JButton obtenerBotonHacerTarea1()

68

{

69 70

return hacerTarea1; }

71 72

// devolver referencia al botón de tarea genérico hacerTarea2

73

public JButton obtenerBotonHacerTarea2()

74

{

75 76

return hacerTarea2; }

77 78

// devolver referencia al arreglo campos de objetos JTextField

79

public JTextField[] obtenerCampos()

80

{

81 82

return campos; }

83 84

// borrar el contenido de los campos de texto

85

public void borrarCampos()

86

{

87

for ( int cuenta = 0; cuenta < tamanio; cuenta++ )

88 89

campos[ cuenta ].setText( "" ); }

90 91 // establecer valores de los campos de texto; lanzar IllegalArgumentException si 92

// hay un número incorrecto de objetos String en el argumento

93

public void establecerValoresCampos( String cadenas[] )

94 95 96

throws IllegalArgumentException { if ( cadenas.length != tamanio )

97

throw new IllegalArgumentException( "Debe haber " +

98

tamanio + " objetos String en el arreglo" );

99 100

for ( int cuenta = 0; cuenta < tamanio; cuenta++ )

101

campos[ cuenta ].setText( cadenas[ cuenta ] );

102

}

103 104 // obtener arreglo de objetos String con el contenido actual de los campos de texto 105

public String[] obtenerValoresCampos()

106

{

107

String valores[] = new String[ tamanio ];

108 109

for ( int cuenta = 0; cuenta < tamanio; cuenta++ )

110

valores[ cuenta ] = campos[ cuenta ].getText();

111 112 113 114

return valores; }

115 } // fin de la clase IUBanco1 // Este programa lee un archivo de objetos en forma secuencial 2 // y muestra cada uno de los registros. 3 import java.io.*; 4 import java.awt.*; 5 import java.awt.event.*; 6 import javax.swing.*; 7 public class LeerArchivoSecuencial extends JFrame 8{ 9

private ObjectInputStream entrada;

10

private IUBanco interfazUsuario;

11

private JButton botonSiguiente, botonAbrir;

12 13

// Constructor -- inicializar el marco

14

public LeerArchivoSecuencial()

15

{

16

super( "Leer un archivo secuencial de objetos" );

17 18

// crear instancia de la interfaz de usuario reutilizable

19

interfazUsuario = new IUBanco( 4 ); // cuatro campos de texto

20

getContentPane().add( interfazUsuario, BorderLayout.CENTER );

21 22 // obtener referencia al botón de tarea genérico hacerTarea1 de IUBanco 23

botonAbrir = interfazUsuario.obtenerBotonHacerTarea1();

24

botonAbrir.setText( "Abrir archivo" );

25

26 // registrar componente de escucha para llamar a abrirArchivo cuando se oprima el botón 27

botonAbrir.addActionListener(

28 29

// clase interna anónima para manejar evento de botonAbrir

30

new ActionListener() {

31 32

// cerrar archivo y terminar la aplicación

33

public void actionPerformed( ActionEvent evento )

34

{

35 36

abrirArchivo(); }

37 38

} // fin de la clase interna anónima

39 40

); // fin de la llamada a addActionListener

41 42 // registrar componente de escucha de ventana para evento de cierre de ventana 43

addWindowListener(

44 45

// clase interna anónima para manejar evento windowClosing

46

new WindowAdapter() {

47 48

// cerrar el archivo y terminar la aplicación

49

public void windowClosing( WindowEvent evento )

50

{

51

if ( entrada != null )

52

cerrarArchivo();

53 54 55

System.exit( 0 ); }

56 57

} // fin de la clase interna anónima

58 59

); // fin de la llamada a addWindowListener

60 61 // obtener referencia al botón de tarea genérico hacerTarea2 de IUBanco 62

botonSiguiente = interfazUsuario.obtenerBotonHacerTarea2();

63

botonSiguiente.setText( "Siguiente registro" );

64

botonSiguiente.setEnabled( false );

65 66 // registrar componente de escucha para llamar a leerRegistro cuando se oprima el botón 67

botonSiguiente.addActionListener(

68 69

// clase interna anónima para manejar evento de siguienteRegistro

70

new ActionListener() {

71 72 // llamar a leerRegistro cuando el usuario haga clic en siguienteRegistro 73

public void actionPerformed( ActionEvent evento )

74

{

75

leerRegistro();

76

}

77 78

} // fin de la clase interna anónima

79 80

); // fin de la llamada a addActionListener

81 82

pack();

83

setSize( 300, 200 );

84

setVisible( true );

85 86

} // fin del constructor de LeerArchivoSecuencial

87 88

// permitir al usuario seleccionar el archivo a abrir

89

private void abrirArchivo()

90

{

91 // mostrar el cuadro de diálogo del archivo, para que el usuario pueda seleccionar el archivo a abrir 92

JFileChooser selectorArchivo = new JFileChooser();

93

selectorArchivo.setFileSelectionMode( JFileChooser.FILES_ONLY );

94 95

int resultado = selectorArchivo.showOpenDialog( this );

96 97 // si el usuario hizo clic en el botón Cancelar en el cuadro de diálogo, regresar 98 99 100

if ( resultado == JFileChooser.CANCEL_OPTION ) return;

101

// obtener el archivo seleccionado

102

File nombreArchivo = selectorArchivo.getSelectedFile();

103 104

// mostrar error si el nombre de archivo es incorrecto

105 if ( nombreArchivo == null || nombreArchivo.getName().equals( "" ) ) 106 JOptionPane.showMessageDialog( this, "Nombre de archivo incorrecto", 107 "Nombre de archivo incorrecto", JOptionPane.ERROR_MESSAGE ); 108 109

else {

110 111

// abrir archivo

112

try {

113

entrada = new ObjectInputStream(

114

new FileInputStream( nombreArchivo ) );

115 116

botonAbrir.setEnabled( false );

117

botonSiguiente.setEnabled( true );

118

}

119 120

// procesar excepciones que pueden ocurrir al abrir el archivo

121

catch ( IOException excepcionES ) {

122

JOptionPane.showMessageDialog( this, "Error al abrir el archivo",

123 124 125

"Error", JOptionPane.ERROR_MESSAGE ); }

126

} // fin de instrucción else

127 128

} // fin del método abrirArchivo

129 130

// leer registro del archivo

131

public void leerRegistro()

132

{

133

RegistroCuentas registro;

134 135

// leer los valores del archivo

136

try {

137

registro = ( RegistroCuentas ) entrada.readObject();

138 139

// crear arreglo de objetos String a mostrar en la GUI

140

String valores[] = { String.valueOf( registro.obtenerCuenta() ),

141 registro.obtenerPrimerNombre(), registro.obtenerApellidoPaterno(), 142

String.valueOf( registro.obtenerSaldo() ) };

143 144

// mostrar contenido del registro

145

interfazUsuario.establecerValoresCampos( valores );

146

}

147 148

// mostrar mensaje al llegar al fin del archivo

149

catch ( EOFException excepcionFinDeArchivo ) {

150 151

botonSiguiente.setEnabled( false );

152 JOptionPane.showMessageDialog( this, "No hay más registros en el archivo", 153

"Fin del archivo", JOptionPane.ERROR_MESSAGE );

154

}

155 156

// mostrar mensaje de error si no se encuentra la clase

157

catch ( ClassNotFoundException excepcionClaseNoEncontrada ) {

158 objeto",

JOptionPane.showMessageDialog( this, "No se pudo crear el

159

"Clase no encontrada", JOptionPane.ERROR_MESSAGE );

160

}

161 162 // mostrar mensaje de error si no se puede leer debido a un problema con el archivo 163

catch ( IOException excepcionES ) {

164

JOptionPane.showMessageDialog( this,

165

"Error al leer del archivo",

166

"Error de lectura", JOptionPane.ERROR_MESSAGE );

167

}

168 169

} // fin del método leerRegistro

170 171

// cerrar archivo y terminar la aplicación

172

private void cerrarArchivo()

173

{

174

// cerrar archivo y salir

175

try {

176

entrada.close();

177

System.exit( 0 );

178

}

179 180 // procesar excepción que puede ocurrir mientras se cierra el archivo 181

catch ( IOException excepcionES ) {

182

JOptionPane.showMessageDialog( this, "Error al cerrar el archivo",

183

"Error", JOptionPane.ERROR_MESSAGE );

184 185

System.exit( 1 );

186

}

187 188

} // fin del método cerrarArchivo

189 190

public static void main( String args[] )

191

{

192 193

new LeerArchivoSecuencial(); }

194 195 } // fin de la clase LeerArchivoSecuencial

Fichero: LeerArchivoSecuencial.java

1 // Este programa lee un archivo de objetos en forma secuencial 2 // y muestra cada uno de los registros. 3 import java.io.*; 4 import java.aw t.*; 5 import java.aw t.event.*; 6 import javax.sw ing.*; 7 public class LeerArchivoSecuencial extends JFrame 8{ 9 private ObjectInputStream entrada; 10 private IUBanco interfazUsuario; 11 private JButton botonSiguiente, botonAbrir; 12 13 // Constructor -- inicializar el marco 14 public LeerArchivoSecuencial() 15 { 16 super( "Leer un archivo secuencial de objetos" ); 17 18 // crear instancia de la interfaz de usuario reutilizable 19 interfazUsuario = new IUBanco( 4 ); // cuatro campos de texto 20 getContentPane().add( interfazUsuario, BorderLayout.CENTER );

1 // Este programa lee un archivo de objetos en forma secuencial 2 // y muestra cada uno de los registros. 3 import java.io.*; 4 import java.awt.*; 5 import java.awt.event.*; 6 import javax.swing.*; 7 public class LeerArchivoSecuencial extends JFrame 8{ 9

private ObjectInputStream entrada;

10

private IUBanco interfazUsuario;

11

private JButton botonSiguiente, botonAbrir;

12 13

// Constructor -- inicializar el marco

14

public LeerArchivoSecuencial()

15

{

16

super( "Leer un archivo secuencial de objetos" );

17 18

// crear instancia de la interfaz de usuario reutilizable

19

interfazUsuario = new IUBanco( 4 ); // cuatro campos de texto

20

getContentPane().add( interfazUsuario, BorderLayout.CENTER );

21 22 // obtener referencia al botón de tarea genérico hacerTarea1 de IUBanco 23

botonAbrir = interfazUsuario.obtenerBotonHacerTarea1();

24

botonAbrir.setText( "Abrir archivo" );

25 26 // registrar componente de escucha para llamar a abrirArchivo cuando se oprima el botón 27

botonAbrir.addActionListener(

28 29

// clase interna anónima para manejar evento de botonAbrir

30

new ActionListener() {

31 32

// cerrar archivo y terminar la aplicación

33

public void actionPerformed( ActionEvent evento )

34

{

35 36

abrirArchivo(); }

37 38

} // fin de la clase interna anónima

39 40 41

); // fin de la llamada a addActionListener

42 // registrar componente de escucha de ventana para evento de cierre de ventana 43

addWindowListener(

44 45

// clase interna anónima para manejar evento windowClosing

46

new WindowAdapter() {

47 48

// cerrar el archivo y terminar la aplicación

49

public void windowClosing( WindowEvent evento )

50

{

51

if ( entrada != null )

52

cerrarArchivo();

53 54 55

System.exit( 0 ); }

56 57

} // fin de la clase interna anónima

58 59

); // fin de la llamada a addWindowListener

60 61 // obtener referencia al botón de tarea genérico hacerTarea2 de IUBanco 62

botonSiguiente = interfazUsuario.obtenerBotonHacerTarea2();

63

botonSiguiente.setText( "Siguiente registro" );

64

botonSiguiente.setEnabled( false );

65 66 // registrar componente de escucha para llamar a leerRegistro cuando se oprima el botón

67

botonSiguiente.addActionListener(

68 69

// clase interna anónima para manejar evento de siguienteRegistro

70

new ActionListener() {

71 72 // llamar a leerRegistro cuando el usuario haga clic en siguienteRegistro 73

public void actionPerformed( ActionEvent evento )

74

{

75

leerRegistro();

76

}

77 78

} // fin de la clase interna anónima

79 80

); // fin de la llamada a addActionListener

81 82

pack();

83

setSize( 300, 200 );

84

setVisible( true );

85 86

} // fin del constructor de LeerArchivoSecuencial

87 88

// permitir al usuario seleccionar el archivo a abrir

89

private void abrirArchivo()

90

{

91 // mostrar el cuadro de diálogo del archivo, para que el usuario pueda seleccionar el archivo a abrir

92

JFileChooser selectorArchivo = new JFileChooser();

93

selectorArchivo.setFileSelectionMode( JFileChooser.FILES_ONLY );

94 95

int resultado = selectorArchivo.showOpenDialog( this );

96 97 // si el usuario hizo clic en el botón Cancelar en el cuadro de diálogo, regresar 98 99

if ( resultado == JFileChooser.CANCEL_OPTION ) return;

100 101

// obtener el archivo seleccionado

102

File nombreArchivo = selectorArchivo.getSelectedFile();

103 104

// mostrar error si el nombre de archivo es incorrecto

105 if ( nombreArchivo == null || nombreArchivo.getName().equals( "" ) ) 106 JOptionPane.showMessageDialog( this, "Nombre de archivo incorrecto", 107 "Nombre de archivo incorrecto", JOptionPane.ERROR_MESSAGE ); 108 109

else {

110 111

// abrir archivo

112

try {

113 114 115

entrada = new ObjectInputStream( new FileInputStream( nombreArchivo ) );

116

botonAbrir.setEnabled( false );

117

botonSiguiente.setEnabled( true );

118

}

119 120

// procesar excepciones que pueden ocurrir al abrir el archivo

121

catch ( IOException excepcionES ) {

122

JOptionPane.showMessageDialog( this, "Error al abrir el archivo",

123

"Error", JOptionPane.ERROR_MESSAGE );

124

}

125 126

} // fin de instrucción else

127 128

} // fin del método abrirArchivo

129 130

// leer registro del archivo

131

public void leerRegistro()

132

{

133

RegistroCuentas registro;

134 135

// leer los valores del archivo

136

try {

137

registro = ( RegistroCuentas ) entrada.readObject();

138 139

// crear arreglo de objetos String a mostrar en la GUI

140

String valores[] = { String.valueOf( registro.obtenerCuenta() ),

141 registro.obtenerPrimerNombre(), registro.obtenerApellidoPaterno(),

142

String.valueOf( registro.obtenerSaldo() ) };

143 144

// mostrar contenido del registro

145

interfazUsuario.establecerValoresCampos( valores );

146

}

147 148

// mostrar mensaje al llegar al fin del archivo

149

catch ( EOFException excepcionFinDeArchivo ) {

150

botonSiguiente.setEnabled( false );

151 152 JOptionPane.showMessageDialog( this, "No hay más registros en el archivo", 153 154

"Fin del archivo", JOptionPane.ERROR_MESSAGE ); }

155 156

// mostrar mensaje de error si no se encuentra la clase

157

catch ( ClassNotFoundException excepcionClaseNoEncontrada ) {

158 objeto",

JOptionPane.showMessageDialog( this, "No se pudo crear el

159 160

"Clase no encontrada", JOptionPane.ERROR_MESSAGE ); }

161 162 // mostrar mensaje de error si no se puede leer debido a un problema con el archivo 163 164

catch ( IOException excepcionES ) { JOptionPane.showMessageDialog( this,

165

"Error al leer del archivo",

166

"Error de lectura", JOptionPane.ERROR_MESSAGE );

167

}

168 169

} // fin del método leerRegistro

170 171

// cerrar archivo y terminar la aplicación

172

private void cerrarArchivo()

173

{

174

// cerrar archivo y salir

175

try {

176

entrada.close();

177

System.exit( 0 );

178

}

179 180 // procesar excepción que puede ocurrir mientras se cierra el archivo 181

catch ( IOException excepcionES ) {

182

JOptionPane.showMessageDialog( this, "Error al cerrar el archivo",

183

"Error", JOptionPane.ERROR_MESSAGE );

184 185

System.exit( 1 );

186

}

187 188

} // fin del método cerrarArchivo

189 190

public static void main( String args[] )

191

{

192

new LeerArchivoSecuencial();

193

}

194 195 } // fin de la clase LeerArchivoSecuencial

Fichero: RegistroCuentas.java 1 // Una clase que representa un registro de información. 2 import java.io.Serializable; 3 public class RegistroCuentas implements Serializable 4{ 5 private int cuenta; 6 private String primerNombre; 7 private String apellidoPaterno; 8 private double saldo; 9 10 // el constructor sin argumentos llama al otro constructor con valores predeterminados 11 public RegistroCuentas() 12 { 13 this( 0, "", "", 0.0 ); 14 } 15 16 // inicializar un registro 17 public RegistroCuentas( int cta, String nombre, String apellido, double sald ) 18 { 19 establecerCuenta( cta ); 20 establecerPrimerNombre( nombre );

1 // Una clase que representa un registro de información. 2 import java.io.Serializable; 3 public class RegistroCuentas implements Serializable 4{ 5

private int cuenta;

6

private String primerNombre;

7

private String apellidoPaterno;

8

private double saldo;

9 10 // el constructor sin argumentos llama al otro constructor con valores predeterminados 11

public RegistroCuentas()

12

{

13 14

this( 0, "", "", 0.0 ); }

15 16

// inicializar un registro

17 public RegistroCuentas( int cta, String nombre, String apellido, double sald ) 18

{

19

establecerCuenta( cta );

20

establecerPrimerNombre( nombre );

21

establecerApellidoPaterno( apellido );

22

establecerSaldo( sald );

23

}

24 25

// establecer número de cuenta

26

public void establecerCuenta( int cta )

27

{

28 29

cuenta = cta; }

30 31

// obtener número de cuenta

32

public int obtenerCuenta()

33

{

34 35

return cuenta; }

36 37

// establecer primer nombre

38

public void establecerPrimerNombre( String nombre )

39

{

40 41

primerNombre = nombre; }

42 43

// obtener primer nombre

44

public String obtenerPrimerNombre()

45

{

46 47

return primerNombre; }

48 49

// establecer apellido paterno

50

public void establecerApellidoPaterno( String apellido )

51

{

52 53

apellidoPaterno = apellido; }

54 55

// obtener apellido paterno

56

public String obtenerApellidoPaterno()

57

{

58 59

return apellidoPaterno; }

60 61

// establecer saldo

62

public void establecerSaldo( double sald )

63

{

64 65

saldo = sald; }

66 67

// obtener saldo

68

public double obtenerSaldo()

69

{

70 71

return saldo; }

72 73 } // fin de la clase RegistroCuentas

TodoJava 2007 tu página de programación Java

Martes, 12 de Julio 2011. Añadir a favoritos

8.7 Archivos de acceso secuencial (con tipo) Dependiendo de la manera en que se accesen los registros de un archivo, se le clasifica como SECUENCIAL o como DIRECTO. En el caso de los archivos de ACCESO SECUENCIAL, para tener acceso al registro localizado en la posición N, se deben haber accesado los N-1 registros previos, en un orden secuencial. Cuando se tienen pocos registros en un archivo, o que los registros son pequeños, la diferencia entre los tiempos de acceso de forma secuencial y directa puede no ser perceptible para el usuario; sin embargo, la diferencia viene a ser significativa cuando se manejan archivos con grandes cantidades de información. La forma de manejar los archivos de acceso secuencial es más sencilla en la mayoría de los lenguajes de programación, por lo que su estudio se antepone al de los archivos de acceso directo. El manejo secuencial de un archivo es recomendable cuando se deben procesar todos o la mayoría de los registros, como por ejemplo en los casos de una nómina de empleados o en la elaboración de reportes contables.

8. Acceso secuencial indexado y B+Trees

8.1 Indices para búsquedas y reportes Hasta el momento hemos estudiado 2 tipos de estructuras de archivos (organización de archivos): •

Acceso secuencial: ○



Archivos que pueden recorrerse secuencialmente (registros contiguos, sin necesidad de offset) regresando los registros en algún orden específico

Indexamiento: ○

Archivos de datos que poseen archivos de índices por diferentes llaves que permiten accesar los datos de distintas maneras, el archivo de datos se encuentra sin ningún orden (entry sequenced).

Problemas: •

Desafortunadamente el archivo secuencial es difícil de mantener.



Los índices (aún usando un esquema de B-Tree) nos permiten hacer búsquedas rápidamente pero ...nos permiten recorrer el archivo secuencialmente ?? ○

En realidad el B-Tree sí nos permite recorrer el archivo en orden, pero no en una manera sencilla ya que debemos hacer demasiados "seeks" para poder hacerlo.

En la práctica en muchas situaciones se requieren de ambas cosas (búsquedas y accesos secuenciales), por ejemplo: •



En la universidad ○

Búsquedas: horarios, adeudos, transcript



Secuenciales: Reportes de calificaciones que se imprimen

En una empresa ○

Búsquedas: agenda telefónica, vacaciones



Secuenciales: cheques de nómina

Las 2 soluciones existentes: •

ISAM indexed sequential access method



B+ Tree

8.2

Indexed Sequential Access Method (ISAM)

Básicamente es la idea de tener un índice esparcido, de manera que el archivo de datos lo agrupamos por bloques y en cada bloque existe un "rango" ordenado de los datos (Figura 8.1).

Figura 8.1

Lo importante a resaltar aquí es que los bloques no necesariamente están formando una secuencia en el archivo, es decir, dentro del archivo de datos los bloques pueden estar desordenados, aquí el detalle es mantener un apuntador a cada bloque subsecuente como se muestra en la figura 8.2.

Figura 8.2

Reglas generales para un índice ISAM: •

Podemos iniciar el archivo con un bloque o varios (definiendo previamente los rangos y dejando bloques vacíos reutilizables).



Cuando agregamos datos ubicamos el bloque correspondiente en base al índice en memoria y procedemos a agregar la información.



Si al insertar notamos que el bloque ya esta lleno entonces tenemos que partirlo en 2, muy similar al btree solo que aqui no necesitamos un separador de ramas, simplemente creamos otro bloque, dividimos equitativamente los datos y ajustamos los apuntadores entre los bloques



Para eliminar, ubicamos el bloque y eliminamos el registro Si al eliminar notamos que se pueden mezclar o unir dos bloques con pocos registros entonces lo podemos hacer y el bloque libre lo marcamos para reutilización

La creación del índice puede ser muy simple como el que se muestra en la tabla 8.1, donde sólo se guardan los máximos valores de cada bloque; quizás si las llaves fueran numéricas todo sería muy simple y podría quedar bien este esquema, pero en especial para cadenas (aunque también aplica para números) lo que en realidad se busca es tener separadores que sirvan para varios casos ya que si eliminamos el máximo valor de un bloque entonces tendremos que alterar el índice. Key

Block number

BERNE

1

CAGE

2

DUTTON

3

EVANS

4

FOLK

5

GADDIS

6

Tabla 8.1 La figura 8.3 muestra una primer solución de separadores basándose en los prefijos de las palabras. De esta manera nos evitamos el tener que estar actualizando constantemente el índice. Estos separadores de rangos nos son únicos, dependerá del programador el definirlos, la figura 8.4 nos muestra una lista de opciones para el caso de los bloques 3 y 4.

Figura 8.3

Figura 8.4

8.3 B+ Trees Estas necesidades son el origen de los B+ Trees. Un B+ Tree es muy similar a un BTree en muchos aspectos, la principal diferencia es que en las "hojas" se encuentran todas las llaves ordenadas, mientras que en los demás nodos se encuentran sólo algunas de ellas que sirven de camino para llegar rápidamente al nivel más bajo. Aquí el orden se define como el número máximo de llaves que puede tener un nodo, cada nodo debe estar siempre al 50 % de su capacidad, excepto la raíz que al menos deberá tener 2 llaves (2 ligas); esto último después de haber pasado las inserciones iniciales donde obviamente la raíz podrá tener 1 sola llave. Para el ejemplo de la Figura 8.5 el orden que estamos considerando es 4. Inserción Lo primero que se debe hacer es buscar en qué nodo hoja debe insertarse, analizando desde la raíz algunos de los nodos del árbol. El insertar una llave en un nodo que no esta lleno es fácil sólo se actualiza el nodo, recordando que la llave "más grande" debe promoverse siempre al nivel superior. Si se inserta en un nodo lleno entonces ocurre un "overfull" y el nodo deberá partirse en 2, promoviendo al nivel superior las llaves más grandes de los nuevos nodos. Recordar que al igual que los b-trees muchas de estas operaciones pueden causar acciones recursivas al alterar los niveles superiores y en caso de llegar a la raíz entonces el árbol crecerá en un nivel.

Figura 8.5

Figura 8.6 Eliminación: El proceso de eliminación se puede deducir del proceso de inserción. Al eliminar una llave localizamos la hoja donde se encuentra la llave a eliminar y la eliminamos, aquí tendremos 2 opciones: •

1) Se mantiene más de la mitad de las llaves del nodo



2) Se presenta un "underflow" al tener menos de la mitad de llaves en el nodo.

Para el primer caso lo único que se debe revisar es si la llave más grande sigue siendo la misma, si la llave que eliminamos era la más grande debemos actualizar el nivel superior (quizás sucesivamente si es el caso) Para el segundo caso debemos "concatenar" dos nodos hermanos, teniendo 2 casos: •

a) formando un solo nodo donde la llave mayor se promueve actualiza al nivel superior.



b) formando 2 nodos cada uno 1/2 lleno y actualizando en el nivel superior las 2 llaves mayores de cada nodo.

Nuevamente es importante recordar que las eliminaciones pueden caer en un proceso recursivo que llegue a la raíz en cuyo caso el árbol se reducirá en un nivel.

Figura 8.7 En esta sección se analizó el modelo conceptual de los B+ Tree y se omitieron detalles de implementación tales como la relación que debe existir entre los nodos "hoja" para poder realizar un acceso secuencial (Figura 8.7) en ese nivel. Resumiendo: •

Los B+ Trees son un caso especial de B-Trees



La gran diferencia es que en las hojas se encuentran todas las llaves y los demás nodos sirven como camino a dichas hojas



Se podría llegar a pensar que el hecho de duplicar las llaves en los distintos niveles del árbol es demasiado costoso pero en realidad no lo es ya que esa duplicidad ocurre en disco (actualmente demasiado barato) y si recordamos la diferencia de "orden" un árbol B+ Tree del mismo orden que un B-Tree ocupará menos espacio ya que no almacena refencias a los datos y podríamos elevar fácilmente su orden permitiendo tener árboles menos profundos; esto último desde luego éstos últimos permitiendo búsquedas en más corto tiempo.



Se utilizan en casos donde se requieren tanto accesos aleatorios como secuenciales.

Nota: es importante mencionar que en la literatura muchos autores definen de maneras diferentes a los árboles, lo que para nosotros es un B+Tree para otros es un B-Tree, la nomenclatura empleada aquí es tomada del concepto original propuesto por Bayer, McCreight, Knuth y Comer.

8.4 Prefix B+ -Trees Como su nombre lo indica son una modificación al algoritmo de B+ Trees La característica de estos árboles radica en que el conjunto de llaves que NO son hojas del árbol (index set), no son llaves completas sino un "prefijo" (prefix) de dichas llaves, de manera que las llaves completas sólo existen en el nives más bajo (hojas del árbol). Similar a B+ Tree las hojas del árbol en realidad son "bloques" de datos que se van ligando unos con otros por ejemplo: Bloc Nex k t

INDEX

1

2 ADAMS...BAIRD...BIXBY...BO ONE...

2

4 BYNUM...CARSON...CARTER.

.. 3

-1 DENVER...ELLIS...

4

3 COLE...DAVIS... Tabla 8.2

Lo que se pretende es que este prefijo sea del menor tamaño posible ya que recordemos que para cada nodo hoja la referencia que se tiene con el nodo superior es la llave de mayor tamaño. En el ejemplo de la figura 8.8 (un prefix b+tree de orden 2) podemos ver que la llave más grande del primer bloque sería "Berne" y el prefijo que nos sirve de separador es "Bo" de ahí lo que mencionábamos de la relación menor-mayor.

Figura 8.8 A diferencia de los árboles que hemos visto, aquí al eliminar una llave únicamente la eliminamos del nodo hoja, no se alteran los prefijos del resto del árbol. Esto facilita enormemente el proceso de eliminación y permite que de una manera sencilla se siga aprovechando ese prefijo para las nuevas inserciones.

Figura 8.9 Por otro lado el proceso de inserción si produce las operaciones que se explicaron anteriormente, en el ejemplo podemos ver que al agrega una llave nueva, se aumenta un nuevo bloque (7) y en consecuencia se agregar un nuevo separador (AY) al index set, formando el nodo (AY,BO,CAM) lo cual resulta en una división del nodo, produciendo entonces (AY) (CAM) y la promoción de (BO).

Figura 8.10 Finalmente una eliminación del bloque 3 puede causar un "underflow" y en consecuencia el bloque 2 y 3 deberán unirse para formar uno solo, en cuyo

caso el separador (CAM) deja de utilizarse y forza a (BO) a que baje nuevamente.

Figura 8.11 Resumiendo: •

Los Prefix B+ Trees se recomiendan cuando las llaves completas ocupan demasiado espacio



Se podría llegar a pensar que el mantener muchos prefijos de llaves eliminadas ocuparía mucho espacio pero nuevamente recordemos que estan en disco (muy barato) y que por ser prefijos su tamaño es mínimo.

5. ARCHIVOS SECUENCIALES EN JAVA. Existen varias técnicas para representar y almacenar registros llamadas organizaciones de archivos. Hay dos aspectos importantes en que difieren las organizaciones de archivos: la secuenciación de registros y el conjunto de operaciones para manipularlos. La forma más sencilla de almacenar un conjunto de registros en un archivo es mediante la organización secuencial. En este tipo de archivos, los registros son escritos consecutivamente cuando el archivo es creado, por lo tanto, deben ser accesados de ese modo cuando se consultan.

La característica más importante de esta técnica de organización de archivos es que solo permite el acceso secuencial, es decir, para accesar al registro k, se deben recorrer los k-1 registros anteriores. Esta característica impide que el archivo secuencial se use en procesos en línea debido a que no se pueden consultar rápidamente los registros, sin embargo, muestra buen rendimiento en procesos en lote donde se aprovecha la capacidad para accesar al siguiente registro rápidamente. Otra ventaja de esta organización de archivos radica en que la dirección del registro está implícita en el sistema; es decir, no se pierden registros por la desaparición de direcciones. La programación orientada a objetos (POO) simula objetos reales con equivalentes de software. Utiliza las relaciones de clase en la que sus objetos tienen las mismas características, atributos y comportamientos. La clave para desarrollar sistemas utilizando los conceptos de orientación a objetos es definir los objetos que lo forman, sus atributos, sus métodos y crear las abstracciones apropiadas para ellos (clases), separando la implementación interna de su comportamiento externo. La abstracción consiste en ocultar los detalles irrelevantes del objeto, esto provoca que el usuario maneje los datos del objeto sin necesidad de conocer los detalles. La POO es una técnica de programación sumamente eficiente que permite dar versatilidad a los sistemas y facilitar la codificación para los programadores. En la aplicación de archivos secuenciales, fácilmente se pueden agregar otros archivos sin necesidad de reprogramar las subrutinas o agregar nuevos procedimientos. Para crear otros archivos secuenciales con las mismas características, basta declarar otros objetos de la misma clase con la ruta y nombre de los archivos deseados. P. ejem. Si se deseara un archivo secuencial de Secretarias y otro de Obreros, se hace la declaración correspondiente de los objetos y se encuentran listos para ser utilizados.

Publicado por Johan Arteaga, Jose Ortiz. en 20:27

164 - Ficheros de Acceso Aleatorio

Tutorial creado por Agustín Froufe . Extraido de: http://www.publispain.com/supertutoriales/ 08 Mayo 2007

< anterior

|

1

..

162 163

164

165 166

..

194

|

siguiente >

A menudo, no se desea leer un fichero de principio a fin; sino acceder al fichero como una base de datos, donde se salta de un registro a otro; cada uno en diferentes partes del fichero. Java proporciona una clase RandomAccessFile para este tipo de entrada/salida.

==== //Creación de un Fichero de Acceso Aleatorio// ==== Hay dos posibilidades para abrir un fichero de acceso aleatorio: Con el nombre del fichero: miRAFile = new RandomAccessFile( String nombre,String modo ); Con un objeto File: miRAFile = new RandomAccessFile( File fichero,String modo ); El argumento modo determina si se tiene acceso de sólo lectura (##r##) o de lectura/escritura (##r/w##). Por ejemplo, se puede abrir un fichero de una base de datos para actualización: RandomAccessFile miRAFile; miRAFile = new RandomAccessFile( "/tmp/kk.dbf","rw" );

==== //Acceso a la Información// ==== Los objetos RandomAccessFile esperan información de lectura/escritura de la misma manera que los objetos DataInput/DataOutput. Se tiene acceso a todas las operaciones //read()// y //write()// de las clases DataInputStream y DataOutputStream. También se tienen muchos métodos para moverse dentro de un fichero: ##long getFilePointer();## Devuelve la posición actual del puntero del fichero ##void seek( long pos );## Coloca el puntero del fichero en una posición determinada. La posición se da como un desplazamiento en bytes desde el comienzo del fichero. La posición 0 marca el comienzo de ese fichero. ##long length();## Devuelve la longitud del fichero. La posición //length() //marca el final de ese fichero.

==== //Actualización de Información// ==== Se pueden utilizar ficheros de acceso aleatorio para añadir información a ficheros existentes:

miRAFile = new RandomAccessFile( "/tmp/kk.log","rw" ); miRAFile.seek( miRAFile.length() ); // Cualquier write() que hagamos a partir de este punto del código // añadirá información al fichero Vamos a ver un pequeño ejemplo, http://www.publispain.com/supertutoriales/diseno/java/cursos/3 /Fuentes/Cap8/Log.java Log.java, que añade una cadena a un fichero existente: import java.io.*; // Cada vez que ejecutemos este programita, se incorporara una nueva // linea al fichero de log que se crea la primera vez que se ejecuta // class Log { public static void main( String args[] ) throws IOException { RandomAccessFile miRAFile; String s = "Informacion a incorporar\nTutorial de Java\n"; // Abrimos el fichero de acceso aleatorio miRAFile = new RandomAccessFile( "/tmp/java.log","rw" ); // Nos vamos al final del fichero miRAFile.seek( miRAFile.length() ); // Incorporamos la cadena al fichero miRAFile.writeBytes( s ); // Cerramos el fichero miRAFile.close(); } }

martes 29 de septiembre de 2009

“TUTORIAL DE ARCHIVOS SECUENCIALES” 1. ¿Que son archivos?. 1.1 Introducción de los archivos. 1.2 Características de archivos. 2. Definición de archivos Secuenciales. 3. Estructura de la organización secuencial. 3.1 Ventajas y desventajas. 3.2 Escritura de los archivos secuenciales. 3.3 Almacenamiento de archivos Secuenciales. 4. Operación sobre archivos secuenciales. Lectura de archivos secuenciales. 4.1 Actualización en archivos secuenciales. 4.2 Creación de archivos secuenciales. 4.3 Clasificación de archivos secuenciales. 4.4 Recuperación de archivos secuenciales. 4.5 Consideraciones de los archivos secuenciales. 5. Archivos secuenciales en java. 6. Video archivos secuenciales. 7. Aplicación de los archivos secuenciales. 8. Conclusiones. 9. Bibliografía.

Publicado por Johan Arteaga, Jose Ortiz. en 09:55 0 comentarios

1. ¿QUE SON ARCHIVOS?

Los archivos también denominados ficheros son una colección de información (datos relacionados entre sí), localizada o almacenada como una unidad en alguna parte de la computadora. Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones. 1.1. INTRODUCCIÓN A LOS ARCHIVOS. Los archivos como colección de datos sirven para la entrada y salida a la computadora y son manejados con programas. Los archivos pueden ser contrastados con Arrays y registros; Lo que resulta dinámico y por esto en un registro se deben especificar los campos, él número de elementos de un arrays (o arreglo), el número de caracteres en una cadena; por esto se denotan como "Estructuras Estáticas". En los archivos no se requiere de un tamaño predeterminado; esto significa que se pueden hacer archivos de datos más grandes o pequeños, según se necesiten. Cada archivo es referenciado por su identificador (su nombre.). 1.2. CARACTERÍSTICAS DE LOS ARCHIVOS. Las principales características de esta estructura son: •

Independencia de las informaciones respecto de los programas.



La información almacenada es permanente.



Un archivo puede ser accedido por distintos programas en distintos momentos.



Gran capacidad de almacenamiento. Publicado por Johan Arteaga, Jose Ortiz. en 09:53 0 comentarios

2. DEFINICIÓN DE ARCHIVOS SECUENCIALES. Es la forma básica de organizar un conjunto de registros, que forman un archivo, utilizando una organización secuencial. En un archivo organizado secuencialmente, lo registros quedan grabados consecutivamente cuando el archivo se utiliza como entrada. En la mayoría de los casos, los registros de un archivo secuencial quedan ordenados de acuerdo con el valor de algún campo de cada registro. Semejante archivo se dice que es un archivo ordenado; el campo, o los campos, cuyo valor se utiliza para determinar el ordenamiento es conocido como la llave del ordenamiento. Un archivo puede ordenarse ascendente o descendentemente con base en su llave de ordenamiento. La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos.

Publicado por Johan Arteaga, Jose Ortiz. en 09:52 2 comentarios

3. ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL. Archivo secuencial es la forma más simple de almacenar y recuperar registros de un archivo. En un archivo secuencial, se almacenan los registros uno tras otro. El primer registro almacenado se coloca al principio del archivo. El segundo se almacena inmediatamente después (no existen posiciones sin uso), el tercero después del segundo, etc. Este orden nunca cambia en la organización secuencial. Una característica de los archivos secuenciales es que todos los registros se almacenan por posición: de primer registro, segundo registro etc. 3.1 Ventajas y desventajas. Ventajas: Los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente. Los archivos con poca volatilidad, gran actividad y tamaño variable son altamente susceptibles de ser organizados secuencialmente. La ventaja más importante de la técnica de organización secuencial de archivos es la capacidad de acceso al "siguiente" registro rápidamente: Mientras que el patrón de acceso a un archivo secuencial se conforme al ordenamiento de registros en el archivo, los tiempos de acceso serán muy buenos. Sin embargo, si el patrón de acceso al programa no se conforma al patrón de ordenamiento de los registros, entonces la eficiencia del programa puede ser terrible. Otra ventaja de los archivos de organización secuencial es que son muy sencillos de usar y aplicar. Desventajas: El acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente no de manera rápida, y el acceso aleatorio es impráctico.

Además, en los archivos secuenciales la dirección de registro está implícita y están vulnerables a fallas del sistema.

3.2 ESCRITURA DE LOS ARCHIVOS SECUENCIALES: En estos archivos, la información sólo puede leerse y escribirse empezando desde el principio del archivo. Los archivos secuenciales tienen algunas características que hay que tener en cuenta: 1. La escritura de nuevos datos siempre se hace al final del archivo. 2. Para leer un dato concreto del archivo hay que avanzar siempre hasta donde se encuentre dicho dato. Si el dato requerido se encuentra antes del dato en que está se está posicionado el archivo en un momento dado, será necesario regresar al comienzo del archivo y avanzar hasta el dato necesario. 3.3 Almacenamiento de archivos Secuenciales. Los archivos secuenciales pueden almacenarse en dispositivos de acceso serial o directo. Con frecuencia los dispositivos de acceso serial son considerablemente menos caros que los dispositivos de acceso directo en un sistema de cómputo, pero de hecho, los dispositivos de almacenamiento de acceso directo en una computadora siempre proporcionan mayor capacidad de almacenamiento y acceso más rápido que los dispositivos de acceso serial.

Publicado por Johan Arteaga, Jose Ortiz. en 09:51 0 comentarios

4. OPERACIÓN SOBRE ARCHIVOS SECUENCIALES. Para leer un archivo secuencial, el sistema siempre comienza al principio del archivo y lee un registro a la vez hasta llegar al registro deseado. Por ejemplo si ocurre que el registro particular es el decimo en un archivo, el sistema comienza en el primer registro y lee hacia delante un registro a la vez hasta llegar al decimo. 4.1 Actualización en archivos secuenciales. Un archivo maestro representa el punto estático de algún aspecto de alguna organización en un tiempo dado. Los cambios en la organización se reflejan en el archivo maestro, y para llevar a cabo la actualización del archivo maestro se tendrán que realizar los tipos de actualización: •

Insertar un nuevo registro.



Borrar un registro.



Modificar un registro.

Al estar usando un archivo secuencial como archivo maestro, el realizar las operaciones de actualización se llevara con el auxilio de un archivo de transacciones, debido a que se realizará el proceso en lote para que sea más eficiente. 4.2 Creación de archivos secuenciales. La creación de un archivo secuencial se realiza agregando registros al final del archivo, no importa el medio de entrada de datos. El archivo

secuencial puede ser almacenado en cintas o en discos magnéticos. Un archivo secuencial puede tener registros fijos o variables, la declaración del archivo y la definición del registro dependerá del lenguaje de programación que se vaya a usar. 4.3 Clasificación de los archivos secuenciales. Normalmente el uso de los archivos secuenciales se da en procesos en lote, donde se ha hecho notar que son eficientes cuando se llevan a cabo diversas operaciones sobre una gran cantidad de registros o de todo el archivo. Esta eficiencia se logra con una acción: la clasificación, proceso que no es exclusivo de los archivos secuenciales, pero si necesaria para diversas operaciones. La clasificación es el proceso de examinar los registros en un archivo y ponerlos en una secuencia ascendente o descendente basada en el valor de uno o más campos del registro.

4.4 Recuperación de archivos secuenciales. Como se menciono anteriormente la recuperación de información de los archivos se da como consulta (modo interactivo) o como la generación de reporte (modo lote). También se indico la desventaja de acceder a un solo registro de un archivo secuencial. Es ineficiente el uso de estos archivos para realizar la consulta de un registro, pero es optimo su uso para la generación de un reporte de

secuencia lógica en que se encuentra el archivo, el reporte podrá ser de varios tipos: •

Selectivo.



Resumen y sumarizacion.



Clasificado por uno o más campos.

4.5 Consideraciones de los archivos secuenciales. El uso más común para archivo secuenciales es para el procesamiento de lotes, tales como respaldo de datos, generación de reportes, transmisión física de datos, etc., archivo de nomina. Ventajas: los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente. Los archivos con poca volatilidad, gran actividad y tamaño variables son altamente susceptibles de ser organizados secuencialmente. Desventajas el acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente ni rápidamente, el acceso aleatorio es impráctico. El archivo a causa de inserciones y supresiones, tiene que ser reescrito periódicamente.

Publicado por Johan Arteaga, Jose Ortiz. en 09:49 0 comentarios

domingo 27 de septiembre de 2009 5. ARCHIVOS SECUENCIALES EN JAVA. Existen varias técnicas para representar y almacenar registros llamadas organizaciones de archivos. Hay dos aspectos importantes en que difieren las organizaciones de archivos: la secuenciación de registros y el conjunto de operaciones para manipularlos. La forma más sencilla de almacenar un conjunto de registros en un archivo es mediante la organización secuencial. En este tipo de archivos, los registros son escritos consecutivamente cuando el archivo es creado, por lo tanto, deben ser accesados de ese modo cuando se consultan. La característica más importante de esta técnica de organización de archivos es que solo permite el acceso secuencial, es decir, para accesar al registro k, se deben recorrer los k-1 registros anteriores. Esta característica impide que el archivo secuencial se use en procesos en línea debido a que no se pueden consultar rápidamente los registros, sin embargo, muestra buen rendimiento en procesos en lote donde se aprovecha la capacidad para accesar al siguiente registro rápidamente. Otra ventaja de esta organización de archivos radica en que la dirección del registro está implícita en el sistema; es decir, no se pierden registros por la desaparición de direcciones. La programación orientada a objetos (POO) simula objetos reales con equivalentes de software. Utiliza las relaciones de clase en la que sus objetos tienen las mismas características, atributos y comportamientos. La clave para desarrollar sistemas utilizando los conceptos de orientación a objetos es definir los objetos que lo forman, sus atributos, sus métodos y crear las abstracciones apropiadas para ellos (clases), separando la implementación interna de su comportamiento externo. La abstracción consiste en ocultar los detalles irrelevantes del objeto, esto provoca que el usuario maneje los datos del objeto sin necesidad de conocer los detalles.

La POO es una técnica de programación sumamente eficiente que permite dar versatilidad a los sistemas y facilitar la codificación para los programadores. En la aplicación de archivos secuenciales, fácilmente se pueden agregar otros archivos sin necesidad de reprogramar las subrutinas o agregar nuevos procedimientos. Para crear otros archivos secuenciales con las mismas características, basta declarar otros objetos de la misma clase con la ruta y nombre de los archivos deseados. P. ejem. Si se deseara un archivo secuencial de Secretarias y otro de Obreros, se hace la declaración correspondiente de los objetos y se encuentran listos para ser utilizados. Publicado por Johan Arteaga, Jose Ortiz. en 20:27 1 comentarios

martes 29 de septiembre de 2009

“TUTORIAL DE ARCHIVOS SECUENCIALES” 1. ¿Que son archivos?. 1.1 Introducción de los archivos. 1.2 Características de archivos. 2. Definición de archivos Secuenciales. 3. Estructura de la organización secuencial.

3.1 Ventajas y desventajas. 3.2 Escritura de los archivos secuenciales. 3.3 Almacenamiento de archivos Secuenciales. 4. Operación sobre archivos secuenciales. Lectura de archivos secuenciales. 4.1 Actualización en archivos secuenciales. 4.2 Creación de archivos secuenciales. 4.3 Clasificación de archivos secuenciales. 4.4 Recuperación de archivos secuenciales. 4.5 Consideraciones de los archivos secuenciales. 5. Archivos secuenciales en java. 6. Video archivos secuenciales. 7. Aplicación de los archivos secuenciales. 8. Conclusiones. 9. Bibliografía. Publicado por Johan Arteaga, Jose Ortiz. en 09:55 0 comentarios

1. ¿QUE SON ARCHIVOS?

Los archivos también denominados ficheros son una colección de información (datos relacionados entre sí), localizada o almacenada como una unidad en alguna parte de la computadora. Los archivos son el conjunto organizado de informaciones del mismo tipo, que pueden utilizarse en un mismo tratamiento; como soporte material de estas informaciones. 1.1. INTRODUCCIÓN A LOS ARCHIVOS. Los archivos como colección de datos sirven para la entrada y salida a la computadora y son manejados con programas. Los archivos pueden ser

contrastados con Arrays y registros; Lo que resulta dinámico y por esto en un registro se deben especificar los campos, él número de elementos de un arrays (o arreglo), el número de caracteres en una cadena; por esto se denotan como "Estructuras Estáticas". En los archivos no se requiere de un tamaño predeterminado; esto significa que se pueden hacer archivos de datos más grandes o pequeños, según se necesiten. Cada archivo es referenciado por su identificador (su nombre.). 1.2. CARACTERÍSTICAS DE LOS ARCHIVOS. Las principales características de esta estructura son: •

Independencia de las informaciones respecto de los programas.



La información almacenada es permanente.



Un archivo puede ser accedido por distintos programas en distintos momentos.



Gran capacidad de almacenamiento. Publicado por Johan Arteaga, Jose Ortiz. en 09:53 0 comentarios

2. DEFINICIÓN DE ARCHIVOS SECUENCIALES. Es la forma básica de organizar un conjunto de registros, que forman un archivo, utilizando una organización secuencial. En un archivo organizado secuencialmente, lo registros quedan grabados consecutivamente cuando el archivo se utiliza como entrada. En la mayoría de los casos, los registros de un archivo secuencial quedan ordenados de acuerdo con el valor de algún campo de cada registro. Semejante archivo se dice que es un archivo ordenado; el campo, o los campos, cuyo valor se utiliza para determinar el ordenamiento es conocido como la llave del ordenamiento. Un archivo puede ordenarse ascendente o descendentemente con base en su llave de ordenamiento. La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos.

Publicado por Johan Arteaga, Jose Ortiz. en 09:52 2 comentarios

3. ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL. Archivo secuencial es la forma más simple de almacenar y recuperar registros de un archivo. En un archivo secuencial, se almacenan los registros uno tras otro. El primer registro almacenado se coloca al principio del archivo. El segundo se almacena inmediatamente después (no existen posiciones sin uso), el tercero después del segundo, etc. Este orden nunca cambia en la organización secuencial. Una característica de los archivos secuenciales es que todos los registros se almacenan por posición: de primer registro, segundo registro etc. 3.1 Ventajas y desventajas. Ventajas: Los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente. Los archivos con poca volatilidad, gran actividad y tamaño variable son altamente susceptibles de ser organizados secuencialmente. La ventaja más importante de la técnica de organización secuencial de

archivos es la capacidad de acceso al "siguiente" registro rápidamente: Mientras que el patrón de acceso a un archivo secuencial se conforme al ordenamiento de registros en el archivo, los tiempos de acceso serán muy buenos. Sin embargo, si el patrón de acceso al programa no se conforma al patrón de ordenamiento de los registros, entonces la eficiencia del programa puede ser terrible. Otra ventaja de los archivos de organización secuencial es que son muy sencillos de usar y aplicar. Desventajas: El acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente no de manera rápida, y el acceso aleatorio es impráctico. Además, en los archivos secuenciales la dirección de registro está implícita y están vulnerables a fallas del sistema.

3.2 ESCRITURA DE LOS ARCHIVOS SECUENCIALES: En estos archivos, la información sólo puede leerse y escribirse empezando desde el principio del archivo. Los archivos secuenciales tienen algunas características que hay que tener en cuenta: 1. La escritura de nuevos datos siempre se hace al final del archivo. 2. Para leer un dato concreto del archivo hay que avanzar siempre hasta

donde se encuentre dicho dato. Si el dato requerido se encuentra antes del dato en que está se está posicionado el archivo en un momento dado, será necesario regresar al comienzo del archivo y avanzar hasta el dato necesario. 3.3 Almacenamiento de archivos Secuenciales. Los archivos secuenciales pueden almacenarse en dispositivos de acceso serial o directo. Con frecuencia los dispositivos de acceso serial son considerablemente menos caros que los dispositivos de acceso directo en un sistema de cómputo, pero de hecho, los dispositivos de almacenamiento de acceso directo en una computadora siempre proporcionan mayor capacidad de almacenamiento y acceso más rápido que los dispositivos de acceso serial.

Publicado por Johan Arteaga, Jose Ortiz. en 09:51 0 comentarios

4. OPERACIÓN SOBRE ARCHIVOS SECUENCIALES. Para leer un archivo secuencial, el sistema siempre comienza al principio del archivo y lee un registro a la vez hasta llegar al registro deseado. Por ejemplo si ocurre que el registro particular es el decimo en un archivo, el sistema comienza en el primer registro y lee hacia delante un registro a la vez hasta llegar al decimo. 4.1 Actualización en archivos secuenciales. Un archivo maestro representa el punto estático de algún aspecto de alguna organización en un tiempo dado. Los cambios en la organización se reflejan

en el archivo maestro, y para llevar a cabo la actualización del archivo maestro se tendrán que realizar los tipos de actualización: •

Insertar un nuevo registro.



Borrar un registro.



Modificar un registro.

Al estar usando un archivo secuencial como archivo maestro, el realizar las operaciones de actualización se llevara con el auxilio de un archivo de transacciones, debido a que se realizará el proceso en lote para que sea más eficiente. 4.2 Creación de archivos secuenciales. La creación de un archivo secuencial se realiza agregando registros al final del archivo, no importa el medio de entrada de datos. El archivo secuencial puede ser almacenado en cintas o en discos magnéticos. Un archivo secuencial puede tener registros fijos o variables, la declaración del archivo y la definición del registro dependerá del lenguaje de programación que se vaya a usar. 4.3 Clasificación de los archivos secuenciales. Normalmente el uso de los archivos secuenciales se da en procesos en lote, donde se ha hecho notar que son eficientes cuando se llevan a cabo diversas operaciones sobre una gran cantidad de registros o de todo el archivo. Esta eficiencia se logra con una acción: la clasificación, proceso que no es exclusivo de los archivos secuenciales, pero si necesaria para diversas operaciones. La clasificación es el proceso de examinar los registros en un archivo y ponerlos en una secuencia ascendente o descendente basada en el valor de uno o más campos del registro.

4.4 Recuperación de archivos secuenciales. Como se menciono anteriormente la recuperación de información de los archivos se da como consulta (modo interactivo) o como la generación de reporte (modo lote). También se indico la desventaja de acceder a un solo registro de un archivo secuencial. Es ineficiente el uso de estos archivos para realizar la consulta de un registro, pero es optimo su uso para la generación de un reporte de secuencia lógica en que se encuentra el archivo, el reporte podrá ser de varios tipos: •

Selectivo.



Resumen y sumarizacion.



Clasificado por uno o más campos.

4.5 Consideraciones de los archivos secuenciales. El uso más común para archivo secuenciales es para el procesamiento de lotes, tales como respaldo de datos, generación de reportes, transmisión física de datos, etc., archivo de nomina. Ventajas: los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente.

Los archivos con poca volatilidad, gran actividad y tamaño variables son altamente susceptibles de ser organizados secuencialmente. Desventajas el acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente ni rápidamente, el acceso aleatorio es impráctico. El archivo a causa de inserciones y supresiones, tiene que ser reescrito periódicamente.

Publicado por Johan Arteaga, Jose Ortiz. en 09:49 0 comentarios

domingo 27 de septiembre de 2009 5. ARCHIVOS SECUENCIALES EN JAVA. Existen varias técnicas para representar y almacenar registros llamadas organizaciones de archivos. Hay dos aspectos importantes en que difieren las organizaciones de archivos: la secuenciación de registros y el conjunto de operaciones para manipularlos. La forma más sencilla de almacenar un conjunto de registros en un archivo es mediante la organización secuencial. En este tipo de archivos, los registros son escritos consecutivamente cuando el archivo es creado, por lo tanto, deben ser accesados de ese modo cuando se consultan. La característica más importante de esta técnica de organización de archivos es que solo permite el acceso secuencial, es decir, para accesar al

registro k, se deben recorrer los k-1 registros anteriores. Esta característica impide que el archivo secuencial se use en procesos en línea debido a que no se pueden consultar rápidamente los registros, sin embargo, muestra buen rendimiento en procesos en lote donde se aprovecha la capacidad para accesar al siguiente registro rápidamente. Otra ventaja de esta organización de archivos radica en que la dirección del registro está implícita en el sistema; es decir, no se pierden registros por la desaparición de direcciones. La programación orientada a objetos (POO) simula objetos reales con equivalentes de software. Utiliza las relaciones de clase en la que sus objetos tienen las mismas características, atributos y comportamientos. La clave para desarrollar sistemas utilizando los conceptos de orientación a objetos es definir los objetos que lo forman, sus atributos, sus métodos y crear las abstracciones apropiadas para ellos (clases), separando la implementación interna de su comportamiento externo. La abstracción consiste en ocultar los detalles irrelevantes del objeto, esto provoca que el usuario maneje los datos del objeto sin necesidad de conocer los detalles. La POO es una técnica de programación sumamente eficiente que permite dar versatilidad a los sistemas y facilitar la codificación para los programadores. En la aplicación de archivos secuenciales, fácilmente se pueden agregar otros archivos sin necesidad de reprogramar las subrutinas o agregar nuevos procedimientos. Para crear otros archivos secuenciales con las mismas características, basta declarar otros objetos de la misma clase con la ruta y nombre de los archivos deseados. P. ejem. Si se deseara un archivo secuencial de Secretarias y otro de Obreros, se hace la declaración correspondiente de los objetos y se encuentran listos para ser utilizados. Publicado por Johan Arteaga, Jose Ortiz. en 20:27 1 comentarios

miércoles 23 de septiembre de 2009 6. VIDEO ARCHIVOS SECUENCIALES.

Publicado por Johan Arteaga, Jose Ortiz. en 10:08 0 comentarios

Entradas antiguas Página principal

Código de: Creación de un archivo en java

Ejemplos prácticos para la programación en java. Visualiza el código fuente o descárgalo directamente a tu PC. Estes ejemplos son básicos para la programar en java y puramente orientativos. Esperemos que te ayuden. Descripción: Crea un archivo en java de acceso aleatorio, escribiendo 100 registros vacios en el disco. Autor:Casidiablo Web:http://casidiablo.blogspot.com

Nombre 1

CrearArchivoAleatorio.jav Descar 2666 gar a

2RegistroCuentas.java 3

Tam año

1718

Descar gar

RegistroCuentasAccesoA Descar 2306 gar leatorio.java

Ejemplos

Fichero: CrearArchivoAleatorio.java

1 // Crea un archivo de acceso aleatorio, escribiendo 100 registros vacíos en el disco. 2 import java.io.*; 3 import javax.sw ing.*; 4 5 public class CrearArchivoAleatorio { 6 7 private static final int NUMERO_REGISTROS = 100; 8 9 // permitir al usuario seleccionar el archivo a abrir 10 private void crearArchivo() 11 { 12 // mostrar cuadro de diálogo para que el usuario pueda seleccionar el archivo 13 JFileChooser selectorArchivo = new JFileChooser(); 14 selectorArchivo.setFileSelectionMode( JFileChooser.FILES_ONLY ); 15 16 int resultado = selectorArchivo.show SaveDialog( null ); 17 18 // si el usuario hizo clic en el botón Cancelar del cuadro de diálogo, regresar 19 if ( resultado == JFileChooser.CANCEL_OPTION ) 20 return;

Fichero: RegistroCuentas.java 1 // Una clase que representa un registro de información. 2 import java.io.Serializable; 3 public class RegistroCuentas implements Serializable 4{ 5 private int cuenta; 6 private String primerNombre; 7 private String apellidoPaterno; 8 private double saldo; 9 10 // el constructor sin argumentos llama al otro constructor con valores predeterminados 11 public RegistroCuentas() 12 { 13 this( 0, "", "", 0.0 ); 14 } 15 16 // inicializar un registro 17 public RegistroCuentas( int cta, String nombre, String apellido, double sald ) 18 { 19 establecerCuenta( cta ); 20 establecerPrimerNombre( nombre );

Fichero: RegistroCuentasAccesoAleatorio.java

1 // Subclase de RegistroCuentas para los programas que usan archivos de acceso aleatorio. 2 import java.io.*; 3 public class RegistroCuentasAccesoAleatorio extends RegistroCuentas { 4 5 public static final int TAMANIO = 72; 6 7 // el constructor sin argumentos llama al otro constructor con los valores predeterminados 8 public RegistroCuentasAccesoAleatorio() 9 { 10 this( 0, "", "", 0.0 ); 11 } 12 13 // inicializar un objeto RegistroCuentasAccesoAleatorio 14 public RegistroCuentasAccesoAleatorio( int cuenta, String primerNombre, 15 String apellidoPaterno, double saldo ) 16 { 17 super( cuenta, primerNombre, apellidoPaterno, saldo ); 18 } 19 20 // leer un registro del objeto RandomAccecssFile especificado

TodoJava 2007 tu página de programación Java

Martes, 12 de Julio 2011. Añadir a favoritos ©left 2006/07 - Copia y uso autorizado mencionando