get_dirinfo()

get_dirinfo(<máscara de directorio>, <tipos de archivo>)

Retorna:

Número de archivos del directorio que coinciden con la máscara y el tipo seleccionado.

Descripción:

Esta función permite obtener la lista de archivos de un directorio (carpeta) del disco.

Se requiere la <máscara del directorio> para seleccionar los archivos que deben listarse. Esta <máscara> no es más que un nombre de archivo parcial, utilizando comodines; por ejemplo, la máscara "*.*" (se debe indicar como un texto entre comillas) seleccionará todos los archivos del directorio.

También se puede incluir en la máscara la ruta de acceso del directorio (en caso contrario se listarán los archivos del directorio actual). Por ejemplo, la máscara "C:\WINDOWS\SYS*.??E" seleccionaría todos los archivos del directorio "C:\WINDOWS" cuyo nombre comenzara por "SYS" y su extensión acabara en "E".

Como segundo parámetro se debe indicar los <tipos de archivos> que deben incluirse en la lista, estos son los siguientes:

_normal - Listar sólo los archivos normales.
_hidden - Incluir también los archivos ocultos.
_system - Incluir también los archivos del sistema.
_subdir - Incluir también los subdirectorios.
_volid - Listar sólo la etiqueta del volumen.

Lo más usual es indicar _normal como <tipo de archivos>, este tipo engloba a la gran mayoría de archivos que aparecen en un disco, tanto de lectura/escritura, como de sólo lectura (únicamente no se incluyen algunos archivos especiales, que normalmente son archivos internos del sistema operativo).

Si se indican _hidden, _system o _subdir, se incluirán estos tipos de archivos además de los normales (no es necesario especificar _normal). Además pueden sumarse estos tipos; por ejemplo, indicando _hidden+_system se listarán todos los archivos normales, los ocultos y los del sistema.

Cuando se indique _volid, únicamente se listará el nombre de la etiqueta de volumen del disco, no se incluirá ningún archivo ni subdirectorio en la lista (no se pueden sumar otros tipos a este).


La función get_dirinfo() simplemente retorna el número total de archivos listados; los nombres de estos archivos se guardan en la estructura global dirinfo (el primer nombre de archivo se guarda en dirinfo.name[0], el segundo en dirinfo.name[1], etc.).

El número total de archivos listados que retorna esta función se guarda además en dirinfo.files.

La lista de nombres de archivos se guarda siempre en orden alfabético, no obstante se puede utilizar la función qsort() para ordenar la estructura global dirinfo por cualquier otro criterio.


Esta función únicamente permite obtener los nombres de los archivos, para obtener más información de los mismos (los atributos, el tamaño, la fecha, etc.) se debe utilizar la función get_fileinfo().

Programa ejemplo:
PROGRAM ejemplo_get_dirinfo;

GLOBAL
    contador;

BEGIN
    write(0,0,0,0,"Listado de archivos - Pulse ESC para terminar");

    get_dirinfo("C:\WINDOWS\*.EXE",_normal); // Obtiene el listado de archivos

    FOR (contador=0;contador<dirinfo.files;contador++)
       x=(contador%4)*80;
       y=16+(contador/4)*8;
       write(0,x,y,0,dirinfo.name[contador]);
    END

    REPEAT
        FRAME;
    UNTIL (key(_esc));
END


Este programa ejemplo lista todos los archivos EXE normales del directorio C:\WINDOWS, y entonces los muestra en pantalla.

El bucle FOR es el encargado de mostrar en pantalla la lista de archivos de la estructura dirinfo a cuatro columnas, ya que la función get_dirinfo() no muestra ninguna información en pantalla, únicamente rellena la estructura con los nombres de los archivos encontrados en el directorio.


Para abrir o crear un archivo se puede utilizar la función fopen().

Para cambiar de directorio se debe utilizar chdir(), y mkdir() para crear uno nuevo.

La función disk_free() permite averiguar el espacio libre que queda en una unidad de disco.


Ver: get_fileinfo() - fopen() - chdir() - mkdir() - disk_free()