Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista...

25
6. Archivos Programación II, FCFM, BUAP

Transcript of Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista...

Page 1: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

6. ArchivosProgramación II, FCFM, BUAP

Page 2: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Definición

• Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio externo) y no en memoria principal.

• Los archivos se utilizan cuando el volumen de datos es significativo y/o cuando se requiere de la permanencia de los mismos.

• Para trabajar con los datos de un archivo, es necesario cargarlos previamente en una memoria intermedia (buffer).

• Un archivo también se puede ver como un grupo de registros relacionados.

Page 3: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Clasificación de archivos

• Por contenido

• Archivos de texto

• Archivos binarios: almacenan datos que no son interpretables como texto (números, imágenes, vídeo, etc.)

• Formas de acceso

Un archivo en el lenguaje C está organizado secuencialmente y el acceso al mismo puede ser:

• Secuencial: se accede a los registros de manera consecutiva hasta que se localiza el dato deseado. En general son los archivos de texto los que se suelen utilizar de esta forma.

• Directo o aleatorio: se puede acceder a cualquier dato del archivo conociendo su posición en el mismo, dicha posición se suele indicar en bytes. En general los archivos binarios se utilizan mediante acceso directo.

Page 4: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Streams (flujos)

• El lenguaje C ve a cada archivo como un flujo (stream) secuencial de bytes.

• Cuando C abre un archivo, le asocia un flujo que permite el acceso a dicho archivo para leer o escribir.

• Cuando comienza la ejecución de un programa se abren tres archivos y sus flujos asociados: la entrada estándar, la salida estándar y el error estándar.

• A los apuntadores de archivo asignados a la entrada, a la salida y al error estándar se les llama stdin, stdout y stderr, respectivamente.

Page 5: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

stream

• Puntero a unaestructura de tipoFILE

• Actúa como el archivo dentro del programa

buffer

• Área de datos en la memoria RAM asignada por el programa que abreel archivo

• Conecta el stream con el archivo en el disco

• Hace la E/S máseficientes (reduce el número de accesos al dispositivo físico)

• La transferenciafísica de datos se hace en múltiplosde su tamaño

Archivo físico

• Contiene nombre y extensión

Page 6: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Estructura FILE

• Al abrir un archivo se devuelve un apuntador a la estructura FILE(definida en stdio.h) la cual contiene información utilizada para procesar un archivo.

• El programador no necesariamente debe conocer las especificaciones de esta estructura para utilizar los archivos.

Page 7: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Estructura FILE

struct _iobuf

{

char *__ptr; //apuntador de posición, apunta al siguiente caracter del buffer

int _cnt; //contador que indica los bytes que quedan en el buffer de E/S

char *_basei //puntero al buffer de E/S

char _flag; //contiene el modo de acceso al fichero y los errores que se

//producen al acceder a él

char _file; //descriptor de archivo, valor dentro de un arreglo del s.o.

//llamado tabla de archivos abiertos. Cada elemento del arreglo

//contiene un bloque de control de archivo (FCB) que utiliza el

//s.o. para administrar un archivo en particular

}

typedef struct _iobuf FILE;

Page 8: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos

• fopen, devuelve un apuntador a la estructura FILE del archivo o NULL si no lo puede abrir. Se le debe especificar un modo para indicar cómo o para qué se abrirá el archivo. Al abrirse un archivo, el puntero de posición está al principio del fichero, excepto si el archivo se abre en modo para añadir, pues entonces se posicionará al final.

• fclose, si un archivo no es cerrado explícitamente se cierra automáticamente cuando finaliza el programa, sin embargo, se aconseja cerrarlo cuando se ha dejado de trabajar con él, ya que el número de archivos abiertos al mismo tiempo es limitado.

• feof, devuelve un valor no nulo si se ha alcanzado el fin de archivo y 0 en caso contrario. La marca de fin de fichero (eof, end of file) es añadida automáticamente por el sistema cuando crea el archivo.

Page 9: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Modos para

la función

fopen

Descripción

r Se abre un archivo sólo para lectura. Si no existe o no se

encuentra, se obtiene un error.

w Se abre un archivo sólo para escritura. Si el archivo ya

existe, el apuntador se coloca al inicio y sobrescribe,

destruyendo el archivo anterior. Si no existe, se crea.

a Se abre un archivo para agregar nuevos datos al final. Si el

archivo no existe, crea uno nuevo.

r+ Se abre un archivo para leer y escribir. El archivo debe

existir.

w+ Se abre un archivo para leer y escribir. Si el archivo existe,

se destruye y se crea uno nuevo, si no existe, se crea.

a+ Se abre un archivo para leer y añadir nuevos datos al final

del mismo. Si el archivo no existe, se crea.

Page 10: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos

• ferror, devuelve un valor distinto de cero si se ha producido un error durante la última operación sobre el archivo y permanece así hasta que se ejecuta la función clearerr.

• clearerr, desactiva tanto el indicador de error como el indicador de fin de fichero para un determinado archivo que haya activado esos indicadores y los pone a cero.

• fflush, devuelve 0 si tiene éxito, sino devuelve EOF. Si se le pasa un puntero nulo se vacían los buffers de todos los archivos abiertos. Un buffer es automáticamente limpiado cuando está lleno, cuando se cierra el stream o cuando el programa finaliza normalmente.

Page 11: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos

• rewind, envía el puntero de posición al inicio del archivo, desactiva los indicadores de error y de fin de archivo.

• remove, borra el archivo especificado, devuelve 0 si tiene éxito.

Page 12: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos de texto

Los datos pueden ser leídos de un archivo o escritos a un archivo caracter a caracter, con estas instrucciones de E/S.

• fputc devuelve el caracter escrito o un EOF si ocurre un error (pero como EOF es un caracter válido, se puede usar ferror para detectar errores).

• fgetc permite leer el caracter que indique el apuntador de posición y devuelve el caracter leído o un EOF si ocurre un error o se detecta el final de archivo (se puede usar ferror o feof para distinguir si ha ocurrido un error o se ha detectado el final del archivo).

Page 13: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos de texto

Los datos pueden ser leídos de un archivo o escritos a un archivo como cadenas de caracteres.

• fputs

• Copia una cadena de caracteres a un archivo pero el carácter de fin de cadena '\0' no se copia.

• Devuelve un valor 0 si se ejecuta satisfactoriamente. En caso contrario, devuelve un valor distinto de 0.

• Para recuperar de forma sencilla la información escrita en el fichero, se debe agregar el caracter '\n' después de cada cadena escrita sobre el fichero.

Page 14: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos de texto

• fgets

• Recordar que esta función almacena '\n' si se tecleó y añade '\0'.

• Devuelve un puntero al principio de la cadena leída. Si el valor devuelto es NULL, quiere decir que ha ocurrido un error o que se ha detectado la marca de fin de fichero. Utilizar la función feof o ferror para determinar lo que ha ocurrido.

Page 15: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos de texto

Los datos pueden ser escritos con formato en un fichero y leídos con formato desde un fichero.

• fprintf devuelve el número de caracteres escritos o un valor negativosi ocurre un error.

• Almacena los caracteres uno por byte y los números enteros y reales en lugar de ocupar 2,4 u 8 bytes dependiendo del tipo, requieren un byte por cada dígito. Por ejemplo el número -105.56 ocuparía 7 bytes. Por lo tanto, salvo excepciones, esta no es la forma idónea de almacenar datos ya que se ocupa mucho espacio en el disco.

Page 16: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos de texto

• fscanf devuelve el número de argumentos que han sido leídos y asignados, entonces devuelve cero si no se han asignado valores y EOF si ha detectado el final del archivo.

• Equivalencias

printf ( "n = %d\n", n); scanf("%d", &n);

fprintf (stdout, "n = %d\n", n); fscanf (stdin, "%d", &n) ;

Page 17: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos binarios

Los datos pueden ser escritos y/o leídos palabra a palabra (recordarque palabra máquina es un dato de tipo int).

• putw

• Escribe un dato binario de tipo int.

• Devuelve el valor escrito o un EOF si ocurre un error (pero como EOF es un caracter válido, se puede usar ferror para detectar errores).

• getw

• Lee el siguiente dato binario de tipo int.

• Devuelve el valor leído o un EOF si ocurre un error o se detectael final del archivo (se puede usar ferror y feof para distinguir lo que ha sucedido).

Page 18: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos binarios

• Los datos pueden ser escritos y/o leídos como registros o bloques, es decir, como conjunto de datos de longitud fija.

• En sí un registro puede ser una variable de tipo char, int, float, double, cadena, etc. pero lo más normal es que sea una estructura o elementos de un array.

• Con lo anterior se tiene que, las siguientes funciones que se explicarán pueden reemplazar a las que se han visto hasta ahora.

• Es lógico que, los datos serán recuperados de un archivo con el mismo formato con el que fueron escritos, de lo contrario los resultados serán inesperados.

Page 19: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos binarios

• fwrite

• Permite escribir x elementos de longitud n bytes en un archivo, es decir, almacena los datos numéricos en formato binario.

• Devuelve el número de elementos actualmente escritos, por lo que, si devuelve un valor menor a x es que ha ocurrido un error.

• fread

• Permite leer x elementos de longitud n bytes de un archivo, es decir, almacena los datos numéricos en formato binario.

• Devuelve el número de elementos actualmente leídos, por lo que, si devuelve un valor menor a x pero distinto de 0 es que ha ocurrido un error.

• Se puede usar ferror y feof para distinguir si se ha producido un error o si se ha llegado al final del archivo.

Page 20: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Nota especial sobre archivos binarios en Windows

• A diferencia de UNIX o GNU/Linux, en Windows los archivos pueden ser abiertos en modo texto o modo binario, el primero es para ver los archivos como si estuvieran bajo UNIX y el segundo como si estuvieran bajo Windows.

• En modo texto un final de línea es representado en C como \n, peroen Windows como CR+LF.

• El EOF es representado en Windows como Ctrl-Z.

• El compilador realiza las conversiones necesarias pero en modo binario las conversiones no se llevan a cabo.

Page 21: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Modos para la

función fopen

Descripción

rb Se abre un archivo sólo para lectura en modo binario.

wb Se abre un archivo sólo para escritura en modo binario. Si

el archivo ya existe, el apuntador se coloca al inicio y

sobrescribe, destruyendo el archivo anterior.

ab Se abre un archivo en modo binario para agregar nuevos

datos al final. Si el archivo no existe, crea uno nuevo.

rb+ Se abre un archivo en modo binario para realizar

modificaciones. Permite leer y escribir. El archivo tiene que

existir.

wb+ Se abre un archivo en modo binario para leer y escribir. Si

el archivo existe, el apuntador se coloca al inicio,

sobrescribe y destruye el archivo anterior.

ab+ Se abre un archivo para lectura y para incorporar nuevos

datos al final. Si el archivo no existe, se crea uno nuevo.

Page 22: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Nota especial sobre archivos binarios en Windows

• En UNIX o GNU/Linux la opción b es ignorada aunque sintácticamente aceptada. Esto permite la transportabilidad de un programa hecho bajo Windows a UNIX.

• En Windows, no hay que confundir el formato binario empleado para almacenar un dato numérico, con el modo binario en el que se abre un archivo, lo cual sólo indica que no se va a efectuar una conversión entre los caracteres '\n' y CR+LF.

• Con ficheros abiertos en modo texto, pueden producirse resultados inesperados debido a la conversión de '\n' en CR+LF. Por ello, en Windows, es aconsejable trabajar en modo binario.

Page 23: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Método de acceso secuencial

• En él se accede a los registros de manera consecutiva hasta que se localiza el dato deseado, es decir, para acceder a la posición n se accede antes hasta la posición n-1 y tras acceder a la posición n se accede a la posición n+1.

• Todas las instrucciones vistas hasta ahora acceden al archivo enforma secuencial.

Page 24: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Método de acceso directo o aleatorio

• Se accede directamente a la posición deseada sin necesidad de acceder a las posiciones que le preceden.

• Para facilitar el acceso aleatorio, los datos se almacenan en registros de longitud fija, así, la computadora puede calcular rápidamente la ubicación exacta de un registro con respecto al principio del archivo.

• Los datos pueden agregarse con facilidad a un archivo de acceso aleatorio sin destruir otros datos del archivo.

• Los datos almacenados previamente en un archivo con registros de longitud fija también pueden modificarse y eliminarse sin rescribir el archivo completo.

Page 25: Presentación de PowerPoint · Definición •Un archivo o fichero desde el punto de vista informático es una colección de información almacenada en memoria secundaria (un medio

Instrucciones en C para procesar archivos binarios

• fseek, desplaza el puntero de posición cierta cantidad positiva o negativa de bytes. Devuelve un 0 si no se ha producido un error y un valor distinto de 0 en caso contrario.

• SEEK_SET o el valor 0, la búsqueda comienza desde el inicio del archivo

• SEEK_CUR o el valor 1, la búsqueda comienza desde la posición actual del archivo

• SEEK_END o el valor 2, la búsqueda comienza desde el final de archivo

• ftell, da como resultado la posición actual del puntero dentro de un archivo (como tipo long int), esta posición es relativa al principio del archivo. Puede devolver -1L si ocurre un error.