fopen()

fopen(<nombre de archivo>, <modo>)

Retorna:

El handle o identificador de archivo abierto, o bien 0 si se produjo un error.

Descripción:

Abre un archivo del disco para lectura o escritura, utilizando el sistema de acceso a través de un handle o identificador de archivo que esta función retorna del archivo abierto o creado.

Se requiere el <nombre del archivo> a abrir o crear, y el <modo> de apertura, que debe ser un literal (texto entre comillas) dentro de los siguientes:

 "r" - Abre el archivo para lectura de los datos contenidos en el mismo.

 "w" - Crea el archivo para escritura (si existe, se perderá su contenido anterior).

 "a" - Abre el archivo para escribir al final del mismo, o lo crea en caso de no existir aún.

 "r+" - Abre un archivo existente para actualizarlo, permitiendo tanto lectura como escritura.

 "w+" - Crea un fichero (o trunca el existente) para escritura, permitiendo también lectura del mismo.

 "a+" - Abre un archivo para leer del mismo en cualquier posición y escribir al final del mismo.

Una vez abierto un archivo, pueden utilizarse todas las funciones de archivos basadas en handles, pero una vez se hayan realizado las operaciones necesarias en el fichero se debe cerrar, utilizando para ello la función fclose().

Las funciones principales son fread() para la lectura de datos dentro del archivo y fwrite() para escritura de datos; es importante haber abierto el archivo en un modo apropiado para las operaciones realizadas. Es decir, que por ejemplo no se podrá escribir en el fichero si se ha abierto exclusivamente para lectura.

Programa ejemplo:
PROGRAM ejemplo_fopen;

GLOBAL
    tabla1[3]=11,22,33,44;
    tabla2[3];
    mihandle;

BEGIN

    mihandle=fopen("help\help.dat","w"); // Abre archivo para escritura

    fwrite(OFFSET tabla1,4,mihandle);
    fclose(mihandle);

    mihandle=fopen("help\help.dat","r"); // Abre archivo para lectura

    fread(OFFSET tabla2,4,mihandle);
    fclose(mihandle);
END


Este programa ejemplo tiene definidas dos tablas globales; tabla1 con cuatro valores inicializados a 11, 22, 33 y 44, y tabla2 con cuatro sin incializar (a cero).

Se utilizan las funciones de archivos para escribir en un archivo el contenido de la tabla1 y después cargarlo sobre la tabla2. Al finalizar el programa, se habrán copiado los datos de la primera tabla en la segunda.

Se llama a la función fopen() en dos ocasiones, la primera para crearlo y escribir en él, y la segunda para abrirlo y leer su contenido.

Es importante resaltar que cada vez que se abra o cree un archivo, se tiene que cerrar después con la función fclose() (se puede ver como, en el ejemplo, se cierra el archivo en dos ocasiones).


La función fseek() permite situar el puntero de lectura/escritura en cualquier posición del archivo. De esta forma, se pueden leer o escribir datos de cualquier punto del archivo.


La función flush() vacía los buffers de escritura y permite además averiguar cuantos archivos hay abiertos en cada momento.


Nota: Las funciones save() y load() permiten igualmente salvar datos en archivos del disco y recuperarlos. Estas funciones son mas simples y con menos funcionalidad, pero su uso es mucho más sencillo que las funciones basadas en handles aquí descritas.


Ver: fclose() fread() - fwrite() - save()