Sei sulla pagina 1di 9

Pseudocdigo

Archivos
1

AGENDA
Pseudocdigo

Introduccin
Archivo
Clasificacin
Flujo o stream
Variable Puntero a archivo
Apertura de archivos
Cierre de archivos
Escritura
Lectura
Final de flujo
Error en operacin de archivo
Grabacin de datos en buffer
Referencia del contenido de un buffer 2
Ejemplo

INTRODUCCIN
Muchas veces necesitamos almacenar cierta
cantidad de datos de forma permanente. La
memoria principal es voltil, escasa y cara. De
modo que cuando necesitamos guardar nuestros
datos durante cierto tiempo tenemos que recurrir a
sistemas de almacenamiento externo (memoria
secundaria).

1
ARCHIVO
Un archivo es una secuencia de datos almacenados
en un medio persistente que estn disponibles para
ser utilizados por un programa. Todos los archivos
tienen un nombre y una ubicacin dentro del sistema
de archivos del sistema operativo.
Los datos en un archivo siguen estando presentes
despus de que termina el programa que lo ha
creado. Un programa puede guardar sus datos en
archivos para usarlos en una ejecucin futura, e
incluso puede leer datos desde archivos creados por
otros programas.
4

ARCHIVO
Un programa no puede manipular los datos de un
archivo directamente. Para usar un archivo, un
programa siempre debe abrir el archivo y asignarlo a
una variable, que llamaremos el archivo lgico.
Todas las operaciones sobre un archivo se realizan a
travs del archivo lgico.
Su tamao slo est limitado por el espacio libre
disponible en el dispositivo correspondiente.

ARCHIVOS EN C++
C ve cada uno de los archivos simplemente como un grupo
secuencial de bytes. Cada archivo termina con un marcador
de fin de archivo o un nmero de bytes especificado
registrado en una estructura de datos.
En C++, un archivo es un concepto lgico que puede
aplicarse a muchas cosas desde archivos de disco hasta
terminales. Un flujo est asociado con un archivo realizando
una operacin de apertura (open), entonces se pueden
intercambiar la informacin entre l y el programa.
Se separa un flujo de un archivo especfico a travs de la
operacin close. Al salir de un archivo abierto, el cierre
provoca que si hay contenidos de su flujo asociado, se
escriban en el dispositivo externo. 6

2
CLASIFICACIN
a) Dependiendo de la direccin del flujo de datos:

- De entrada: los datos se leen por el programa


desde el archivo.
- De salida: los datos se escriben por el
programa hacia el archivo.
- De entrada/salida: los datos pueden ser
escritos o ledos.

CLASIFICACIN
b) Dependiendo del tipo de valores permitidos a cada
byte:

- De texto: estn compuestos nicamente por


textos, slo caracteres.
- Binarios: contienen informacin de cualquier
tipo, codificada en forma binaria para el
propsito de almacenamiento y procesamiento
en computadores.

CLASIFICACIN
c) Segn el tipo de acceso:

- Archivos secuenciales: imitan el modo de


acceso de los antiguos archivos secuenciales
almacenados en cintas magnticas.
- Archivos de acceso aleatorio: permiten
acceder a cualquier punto de ellos para realizar
lecturas y/o escrituras.

3
CLASIFICACIN
d) Segn la longitud de registro:
- Longitud variable: en estos archivos cada registro es de
longitud diferente; en realidad, en este tipo de archivos no
tiene sentido hablar de longitud de registro, podemos
considerar cada byte como un registro.
- Longitud constante: en estos archivos los datos se
almacenan en forma de registro de tamao constante.
- Mixtos: en ocasiones pueden crearse archivos que
combinen los dos tipos de registros, algunos software
usan registros de longitud constante, pero aade un
registro especial de cabecera al principio para definir,
entre otras cosas, el tamao y el tipo de registros.

10

FLUJO, CORRIENTE O STREAM


Los flujos dan canales de comunicacin entre el
archivo y el programa. Por ejemplo, el flujo de
entrada estndar permite que un programa lea
datos desde el teclado, el flujo de salida estndar
permite que un programa imprima datos en la
pantalla.
Un flujo se relaciona con un archivo utilizando una
operacin de apertura y se desliga del archivo con
una operacin de cierre.

11

TIPOS
a) Flujos de texto: es una secuencia de caracteres
organizados en lneas terminadas por un carcter de
nueva lnea (en el estndar ANSI es opcional).
b) Flujos binarios: es una secuencia de bytes que
tienen una correspondencia uno a uno con un
dispositivo externo. As que no tendr lugar ninguna
traduccin de caracteres. Adems, el nmero de
bytes escritos (ledos) ser el mismo que los
encontrados en el dispositivo externo.

12

4
DECLARACIN DE VARIABLE PUNTERO DE
ARCHIVO

Sintaxis : FILE *flujo


Propsito : Identifica un archivo especifico de disco
y se usa por su flujo asociado para dirigir cada una
de las funciones de memoria intermedia de E/S al
lugar donde se realizan las operaciones.
Ejemplo : FILE *fichero;

Un puntero de archivo es un puntero a la


informacin que define varios aspectos del archivo,
incluyendo su nombre, estado y posicin actual. Un
puntero de archivo es una variable de tipo FILE.
Con objeto de leer o escribir archivos, el programa
13
necesita utilizar punteros de archivo.

APERTURA DE ARCHIVOS
Sintaxis : flujo = fopen(char *nombre, char *modo);
Propsito : Abrir un flujo para enlazar un archivo
con un flujo y retornar el puntero de archivo
asociado con un archivo.
Ejemplo :

archivo = fopen(d:ficha.dat,w);
La funcin fopen() devuelve la direccin cero o
NULL si la operacin de apertura falla (por ejemplo
un disco lleno o protegido contra escritura antes de
comenzar a escribir en l), o un valor (direccin)
distinto al correcto.
14

APERTURA DE ARCHIVOS
Si la operacin es correcta, a partir de este instante el
archivo queda referido por el apuntador flujo hasta el
momento en que se cierra.
Los parmetros de entrada son:

a) nombre: es una cadena de caracteres que contiene


un nombre de archivo vlido para el sistema operativo
y tambin pueden incluir la especificacin del camino
completo.
b) modo: es una cadena de caracteres que contiene el
estado deseado de apertura y especifica el tipo de
archivo que se abrir o se crear uno nuevo y el tipo
15
de dato que puede contener: texto (t) o binario (b).

5
MODO
Modo Significado
w Crear un nuevo archivo de texto para escritura (o se sobrescribe si ya existe)
r Abrir un archivo de texto para lectura (el archivo debe existir)
a Aadir a un archivo de texto (se abre para escritura y el cursor se sita al final del
archivo. Si el fichero no existe, se crea)
wb Crear un archivo binario para escritura
rb Abrir un archivo binario para lectura
ab Aadir a un archivo binario
w+ Crear un archivo nuevo para leer/escribir (o se sobrescribe si ya existe)
r+ Abrir un archivo para leer/escribir (el archivo debe existir)
a+ Aadir a un archivo para leer/escribir (el cursor se sita al final del fichero, Si el
fichero no existe, se crea
w+b Crear un archivo binario para leer/escribir
r+b Abrir un archivo binario para leer/escribir
a+b Aadir a un archivo binario para leer/escribir
wt Crear un archivo de texto para escribir
rt Abrir un archivo de texto para leer
at Aadir a un archivo de texto
w+t Crear un archivo de texto para leer/escribir
r+t Abrir un archivo de texto para leer/escribir
a+t Aadir o crear a un archivo de texto para leer/escribir 16

CIERRE DE ARCHIVOS
Sintaxis : int fclose(FILE *flujo);
Propsito : Cerrar un flujo que fue abierto por una llamada a
fopen() y antes de abandonar el programa, finalizar su vnculo
con nombre
Ejemplo :
fclose(fichero);

Si fclose() devuelve un valor cero (0) significa que la operacin


de cierre se ha realizado con xito. Si ha habido algn error, el
valor de retorno es la constante EOF.
Al cerrar un archivo almacena los datos que an estn en el
buffer de memoria, y actualiza algunos datos de la cabecera del
archivo que mantiene el sistema operativo.
17

LECTURA DE ARCHIVOS
Se puede usar la funcin de lectura (archivos abiertos en modo r):
Sintaxis :
int fread(void *puntero, int longitud, int registros, FILE *corriente);
Propsito : Leer desde un flujo uno o ms registros de una longitud
constante, y los almacena en una direccin de memoria. Devuelve
un valor menor o igual al nmero de datos ledos (no el nmero de
bytes) y si est al final del archivo devuelve 0.
Ejemplo :

fread(direccin, tamao, nmero, fichero);


Los parmetros son: un puntero a la zona de memoria donde se
almacenarn los datos ledos, la longitud de cada registro, el
nmero de registros a leer y un puntero a la estructura FILE del
archivo del que se har la lectura. 18

6
ESCRITURA DE ARCHIVOS
Para escribir en un archivo (abierto en los modos w o a) se
puede utilizar:
Sintaxis :
int fwrite(void *puntero, int longitud, int registros, FILE *flujo);
Propsito : Escribir hacia un flujo uno o ms registros de una
longitud constante almacenados a partir de una direccin de
memoria determinada. Devuelve un valor igual al nmero de
registros escritos (no el nmero de bytes) o EOF en caso de error.
Ejemplo :
fwrite(direccin, longitud, nmero, fichero);
Los parmetros son: un puntero a la zona de memoria donde se
almacenarn los datos ledos, el tamao de cada registro, el
nmero de registros a leer y un puntero a la estructura FILE del 19
archivo del que se har la lectura.

FINAL DE UN FLUJO
Sintaxis : int feof(FILE *flujo);
Propsito : Comprobar si se ha llegado al final de un flujo,
en una lectura que efectuamos en ste. El valor de retorno
es distinto de cero slo si no se ha alcanzado el fin del
archivo. Se puede aplicar este mtodo tanto para los
archivos de texto como a los binarios.
Ejemplo :
feof(fichero);
Muy frecuentemente deberemos trabajar con todos los
valores almacenados en un archivo de forma secuencial, la
forma que suelen tener los bucles para leer todos los datos
de un archivo es permanecer leyendo mientras no se
20
detecte el fin del archivo.

ERROR EN OPERACIN DE ARCHIVO


Sintaxis : int ferror(FILE *flujo);
Propsito : Determinar si una operacin con
archivos produce un error. Devuelve verdad si ha
ocurrido un error durante la ltima operacin de
archivo y devuelve falso si tuvo xito la operacin.
Ejemplo :

ferror(fichero);

21

7
GRABACIN DE DATOS DE UN BUFFER
Sintaxis : int fflush(FILE *corriente);
Propsito : Forzar la grabacin de los datos
acumulados en el buffer de salida del archivo
asociado a l. El valor de retorno es cero si la
funcin se ejecut con xito, y EOF si hubo algn
error. El parmetro de entrada es un puntero a la
estructura FILE del archivo del que se quiere vaciar
el buffer. Si es NULL se har el vaciado de todos
los archivos abiertos
Ejemplo :

fflush(fichero);
22

REFERENCIA DEL CONTENIDO DE UN FLUJO


Sintaxis : int fseek(FILE *flujo, long int
desplazamiento, int origen);
Propsito : Ubicar el cursor del archivo para leer o
escribir, que referencia el contenido del flujo
especificado, en la posicin marcada por los
argumentos de llamada. El valor de retorno es cero
si la funcin tuvo xito, y un valor distinto de cero si
hubo algn error Se usa en las E/S de acceso
directo.
Ejemplo :

fseek(fichero, 128, 0);


23

PARMETROS
Los parmetros de entrada son: un puntero a una estructura
FILE del archivo en el que queremos cambiar el cursor de
lectura/escritura, el valor del desplazamiento y el punto de
origen desde el que se calcular el desplazamiento.
El parmetro origen puede tener tres posibles valores:
- SEEK_SET o 0, el desplazamiento se cuenta desde el
principio del archivo. El primer byte del archivo tiene un
desplazamiento cero.
- SEEK_CUR o 1, el desplazamiento se cuenta desde la
posicin actual del cursor.
- SEEK_END o 2, el desplazamiento se cuenta desde el final
del archivo.
El desplazamiento es el nmero de bytes desde el origen
24
hasta alcanzar la nueva posicin.

8
EJEMPLO

25

Potrebbero piacerti anche