Вы находитесь на странице: 1из 7

Introduccin a Archivos

2. Archivos

Un archivo se encuentra compuesto por un conjunto de registros y estos por un conjunto de campos que es a donde se guardan los datos. 2.1 Campos de un registro

Los campos de un registro son las unidades lgicas donde se almacenan los datos de un registro. Sus caractersticas son el nombre, tipo y tamao.

Los tipos de datos y su tamao se vern restringidos por el lenguaje que se utilice. No todo s los lenguajes soportan los mismos tipos de datos y los rangos de los ajes mismos pueden variar Un conjunto de campos componen un registro, como por ejemplo la tabla anterior , donde los 4 datos tomados como una unidad componen el registro. Un conjunto de registros compone un archivo. componen .Existen bsicamente dos tipos de archivos: Secuenciales Indexados

Explicaremos a continuacin cada uno de ellos.

Archivos Secuenciales

Tienen como caracterstica principal que su organizacin es secuencial y su forma de acceso a los distintos registros es nicamente secuencial. Es decir, para acceder al registro 50 debo haber pasado por los 49 anteriores. Estos archivos pueden o no estar ordenados y pueden o no tener registros repetidos o sea varios registros para una misma cuenta.

Eso se vera en los ejercicios , si queres podemos poner una tablita ejemplo Tomaremos como notacin la siguiente y colocaremos debajo de cada campo el tipo y tamao:

S/R C/R

sin repetidos con repetidos ordenacin

Nrocta
N(5)

razonsocial
A( 25 )

fecha
F( 6 )

comentarios
memo( 200 )

C/R

El ordenamiento del archivo puede ser realizado por ms de un campo, por ejemplo podemos decir que el archivo esta ordenado por nrocta y dentro de el por fecha.

Archivos Indexados

Los archivos indexados tienen como particularidad el acceso restringido, se necesita clave para acceder y estn ordenados por ellas. Si bien la organizacin fsica de los registros es de acuerdo al orden de grabacin su organizacin lgica esta dada por la clave. La organizacin de un archivo indexado es indexada y segn el lenguaje las formas de acceso pueden ser secuencial, random o al azar y dinmica. Secuencial es la lectura de un registro a posteriori del anterior con la nica seguridad de que el archivo se encuentra ordenado por la clave de acceso definida. El acceso random es el que se realiza en forma directa y nica a un registro en particular debindose conocer el valor completo de la clave de acceso. Si el registro est compuesto por mas de un campo se debern conocer todos los valores de esos campos que componen la clave Dinmica es la forma de acceso a un registro en particular y de all permite leer el archivo en forma secuencial hasta una condicin dada. En este caso no es necesario conocer la clave completa. Si esta se encuentra compuesta por mas de un campo y existe peso de orden entre ellos ser necesario que conozcamos aquellos de mayor peso. No podemos conocer los de menor peso y desconocer los de mayor peso dentro de la clave compuesta por mas de un campo , se encuentran ordenadas , por ejemplo el archivo notas de un alumno estara ordenada por legajo y dentro de los legajos ordenados por materias , entonces yo no puedo querer ingresar a una materia si antes no se de que alumno se trata

Este ejemplo es una clave compuesta por dos campos que explica en parte lo anteriormente explicado

patent

nroinfraccio

tipoinfraccio

monto

En este caso de un archivo de infracciones, la clave esta compuesta por la patente del automvil y como esta puede estar repetida por varias multas hay que agregarle el campo nroinfraccion para lograr que ese valor sea nico. Este archivo estar lgicamente ordenado por patente y dentro de ella por nro de infraccin. Un archivo indexado puede tener varias claves de acceso definidas a la vez, eso depender del lenguaje a utilizar. Podemos decir que un archivo indexado esta compuesto por la tabla base que es donde se encuentran los registros propiamente dichos y distintas tablas ndices asociadas para su ms rpido y fcil acceso.

Archivos
Todo lo referido a E/S se maneja desde la clase System.IO del marco .NET y esta basado en el concepto de streams Un streams es un conjunto de bytes , en el cual podemos escribir,leer, situarnos dentro de una posicin determinada y mucho mas siempre dependiendo de la capacidad del dispositivo en el que estemos trabajando. Los archivos pertenecen a la clase FileStream y podemos reducir sus operaciones como Crear un archivo o abrir uno ya existente Leer o escribir datos en un archivo Cerrar el archivo

Lo primero que debemos hacer es crear un objeto de tipo FileStream asociado a un archivo en particular , el cdigo podra ser : Dim archivo as FileStream (ruta , modo apertura) Dim archivo as FileStream( ruta . modo apertura , acceso ) Dim archivo as FileStream( ruta . modo apertura , acceso , sharing ) Donde Ruta Modo apertura Acceso Sharing Veamos ejemplos Si el archivo ya existe y queremos leer o escribir Dim archivo as FileStream(a1.dat,Filemode.open) Si deseo abrir un archivo y no existe lo crea Dim archivo as FileStream(a1.dat,filemode.openorcreate) Si deseo abrir el archivo para leer ( debe existir el archivo) Dim archivo as Filestream(a1.dat,filemode.open,fileaccess.read) Si deseo crear un archivo y escribirlo ( si exista lo pisa ) Dim archivo as FileStream(a1.dat,filemode.create,fileaccess.write) directorio donde se desea guardar el archivo crearse,abrirse,crearse si no existe, abrirse para agregar datos , etc leer,escribir o ambas modo de bloqueo de Windows

Si deseo crear un archivo y escribirlo ( si exista lo pisa ) y permite que potro proceso escriba y lea de el Dim archivo as

FileStream(a1.dat,FileMode.create,FileAccess.write,FileShare.ReadWrite)

Resumamos un poco Modos de apertura de un archivo Append Create createNew open openOrCreate Truncate FileMode.

si no existe lo crea.si existe lo abre y se sita al final del mismo crea un archivo nuevo .si exista lo pisa crea un archivo .si existe uno con igual nombre enva una excepcin abre un archivo existente,si no existe enva una excepcin abre el archivo y si no existe lo crea abre un archivo existente y lo deja en cero bytes FileAccess.

Modos de acceso a un archivo Read Write ReadWrite

permite leer datos de un archivo permite escribir datos en un archivo permite leer y escribir datos en un archivo

Archivos de texto
Podemos tener bsicamente tres tipos de archivos de texto Archivos con texto , visible desde un editor de Windows Archivos con datos binarios Archivos con el estado de un objeto guardado

Para trabajar con archivo de texto puro utilizaremos Streamreader y StreamWriter Hay dos formas de crear este objeto Dim reader as new streanReader(stream base) Dim reader as new streamreader(stream base, codificacion) Entonces cuando queremos leer un archivo deberamos Dim archivo as new FileStream(a1.dat,filemode.open) , creamos el filestream Dimreader as new streamreader(archivo) , creamos el streamreader para leerlo Podriamos abreviar mediante Dim archivo as new streamreader(a1.dat) Los mtodos principales d Este objeto StreamReader sern Read ReadBlock lee el prximo carcter disponible a partir de la posicin actual y avanza lee un bloque de caracteres y lo almacena en un vector de chars

Readline ReadToEnd Peek Close

lee una lnea del archivo lee el contenido de todo el archivo y lo guarda en un string obtiene el valor del prximo carcter disponible pero no avanza cierra el stream liberando recursos y referencias al archivo

Veamos un ejemplo de lectura por lnea de un archivo Dim archivo as New StreamReader (archi.dat) Dim lnea as string lnea = archivo.readline Do while not lnea is nothing lnea = archivo.readline Loop Archivo.close( ) Podriamos escribir lo mismo utilizando en el whilePeek Dim archivo as New StreamReader (archi.dat) Dim lnea as string lnea = archivo.readline Do while not archivo.peek = -1 lnea = archivo.readline Loop Archivo.close( ) Si por ejemplo deseramos leer todo el archivo de una sola vez Dim archivo as New StreamReader (archi.dat) Dim contenido as string contenido = archivo.ReadToEnd Archivo.close( ) Para escribir un archivo de texto deberamos hacer lo siguiente siguiendo el mismo razonamiento Dim writer as New StreamWriter(a1.dat) Recordar que si existe el archivo perderemos el contenido actual

Mtodos del StreamWriter Write Writeline Flush Close escribe una cadena de texto en el archivo escribe una cadena y le agrega un salto de fin de lnea devuelve el contenido del buffer del stream al archivo realiza cualquier escritura pendiente sobre el archivo (flush) y lo cierra

Ejemplo de escribir 100 nmeros en un archivo Dim archivo as new streamwriter(a1.dat)

Dim i as integer For i = 1 to 100 Archivo.writeLine( i.tostring)recordar que hay que pasar de integer a string Next Archivo.Close

Archivos binarios
Deberemos utilizar otras clases para estos tipos de archivos que no guardan texto plano legible , sino cdigo binario. Estas clases sern BinaryReader y BinaryWriter Para escribir archivos binarios deberemos obligatoriamente crear previamente un FileStream Dim archivo as New Filestream (a1.dat, filemode.Create) Dim writer as New BinaryWriter(archivo) Los mtodos ms comunes de esta clase sern Write Flush Seek Close guarda una variable en el archivo vuelca en el archivo cualquiera escritura pendiente se sita en una posicin particular dentro del archivo cierra el binarywriter,elfilestream y libera recursos

Para leer un archivo binario es similar y tiene las mismas restricciones

Dim archivo as New Filestream (a1.dat, filemode.open) Dim reader as New BinaryReader(archivo)

Los mtodos ms comunes de esta clase sern Peekchar consulta el prximo carcter disponible pero no avanza el cursor Read lee un bloque de bytes del archivo ReadBoolean lee una variable booleana ReadByte,ReadBytes lee un byte o un bloque de bytes ReadChar,ReadChars lee un carcter o un bloque de carcter ReadSingle lee una variable single ReadDecimal lee una variable decimal Close cierra el BinaryWritery el Filestream

Вам также может понравиться