miércoles, 1 de diciembre de 2021

ADMINISTRACIÓN DE ARCHIVOS

 Esta sección presenta los aspectos generales de la implementación de programas de archivos en Lenguaje C++. Aunque se puede almacenar cualquier tipo de datos en archivos, aquí se muestran las operaciones del manejo de registros (struct) en archivos, por lo que las funciones que se mencionan a continuación son las mas importantes para este tipo de datos.

 

 Declaración del alias del archivo


Para realizar programas de manejo de archivos en Lenguaje C++ se requiere el encabezado “Standard I/O” y se necesita incluirlo de la sig. forma:

 

#include <stdio.h>

 

además es necesario declarar una variable de tipo FILE que opere como el apuntador a la estructura del archivo  (alias), esto se logra con la sig. línea:

 

FILE *alias;

 

Apertura de archivos

FOPEN()

Antes de abrir un fichero necesitamos declarar un puntero de tipo FILE, con el que trabajaremos durante todo el proceso. Para abrir el fichero utilizaremos la función fopen( ).

Su sintaxis es:

FILE *puntero;
puntero = fopen ( nombre del fichero, "modo de apertura" );

Donde puntero es la variable de tipo FILE, nombre del fichero es el nombre que daremos al fichero que queremos crear o abrir. Este nombre debe ir encerrado entre comillas. También podemos especificar la ruta donde se encuentra o utilizar un array que contenga el nombre del archivo ( en este caso no se pondrán las comillas ). Algunos ejemplos:

puntero=fopen("DATOS.DAT","r");
puntero=fopen("C:\\TXT\\SALUDO.TXT","w");

Un archivo puede ser abierto en dos modos diferentes, en modo texto o en modo binario. A continuación lo veremos con más detalle.

La función fopen devuelve, como ya hemos visto, un puntero de tipo FILE. Si al intentar abrir el fichero se produjese un error ( por ejemplo si no existe y lo estamos abriendo en modo lectura ), la función fopen devolvería NULL. Por esta razón es mejor controlar las posibles causas de error a la hora de programar. Un ejemplo

FILE *pf;
pf=fopen("datos.txt","r");
if (pf == NULL) printf("Error al abrir el fichero");

freopen()

Esta función cierra el fichero apuntado por el puntero y reasigna este puntero a un fichero que será abierto. Su sintaxis es:

freopen(nombre del fichero,"modo de apertura",puntero);

Donde nombre del fichero es el nombre del nuevo fichero que queremos abrir, luego el modo de apertura, y finalmente el puntero que va a ser reasignado.

La función fopen() y modos de apertura de archivos


Se usa la función fopen para abrir un archivo, determinar el modo de apertura y establecer la vía de comunicación mediante su alias correspondiente. Además determinar el tipo de contenido del archivo (texto o binario). Esta función tiene dos argumentos: el nombre del archivo y su modo (Fig. 16). La Fig. 15 muestra los modos de apertura de archivos de texto y binarios.

 

Modo de apertura

(archivos de texto)

Modo de apertura

(archivos binarios)

Operación

“r”

“rb”

Apertura en modo de sólo lectura. El archivo debe existir.

“w”

“wb”

Apertura en modo de sólo escritura. Si el archivo existe, se reescribirá (pierde el contenido anterior).

Si el archivo no existe, lo crea.

“a”

“ab”

Apertura en modo de agregar. Si el archivo existe, los datos se agregan al final del archivo, en caso contrario, el archivo se crea.

“r+”

“rb+”

Apertura en modo de lectura/escritura. El archivo debe existir.

“w+”

“wb+”

Apertura en modo de lectura/escritura. Si el archivo existe, se reescribirá (pierde el contenido anterior).

“a+”

“ab+”

Apertura en modo de lectura/agregar. Si el archivo no existe lo crea.

Fig. 15. Modos de apertura para archivos de texto y binarios.




 Validar la apertura de un archivo

Algunas funciones requieren la existencia del archivo para realizar operaciones, por ello es necesario verificar que cuando se intenta abrir un archivo haya tenido éxito la operación. Si un archivo no se puede abrir, la función fopen devuelve el valor de 0 (cero), definido como NULL en stdio.h. La Fig. 17 muestra un ejemplo de la manera de detectar la apertura de un archivo.

#include <stdio.h>

FILE *alias;

 

       alias = fopen(“EJEMPLO.DAT”, “rb”);        if (alias==NULL)

       {

          cout << “\n\r No se puede abrir el archivo !!!”;           getch();           return();

       }

Fig. 17. Validar la apertura de un archivo.

 

Cierre de archivos

Una vez que hemos acabado nuestro trabajo con un fichero es recomendable cerrarlo. Los ficheros se cierran al finalizar el programa pero el número de estos que pueden estar abiertos es limitado. Para cerrar los ficheros utilizaremos la función fclose( );

Esta función cierra el fichero, cuyo puntero le indicamos como parámetro. Si el fichero se cierra con éxito devuelve 0

fclose(puntero);

Un ejemplo ilustrativo aunque de poca utilidad:

FILE *pf;
pf=fopen("AGENDA.DAT","rb");
if ( pf == NULL ) printf ("Error al abrir el fichero");
else fclose(pf);

Cierre de archivos usando fclose() y fcloseall()

Antes de dejar de utilizar un archivo es necesario cerrarlo. Esto se logra mediante las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del archivo que se desea cerrar. La función fcloseall cierra todos los archivos abiertos.

 

 VÍDEO DE APOYO 







 

No hay comentarios.:

Publicar un comentario

INTRODUCCIÓN

¿Qué es C++?   Es un lenguaje de programación de propósito general que combina distintos paradigmas o modelos de programación. El lenguaje n...