Compartir a través de


_find, _wfind (Funciones)

La búsqueda de estas funciones para y cierre busca los nombres de archivo especificado:

Comentarios

La función de _findfirst proporciona información sobre la primera instancia de un nombre de archivo que coincida con el archivo especificado en el argumento de filespec . Puede utilizar en filespec a cualquier combinación de caracteres comodín admitida por el sistema operativo host.

Las funciones devuelven información de archivo en una estructura definddata_t de _, que se define en IO.h. Las diversas funciones en la familia utilizan muchas variaciones en la estructura de _finddata_t . La estructura básica de _finddata_t incluye los siguientes elementos:

  • unsigned attrib
    Atributo de archivo.

  • time_t time_create
    Hora de creación de archivos (– 1L para los sistemas de archivos FAT). Esta vez se almacena en formato UTC. Para convertir la hora local, utilice localtime_s.

  • time_t time_access
    Hora de acceso a archivos último (– 1L para los sistemas de archivos FAT). Esta vez se almacena en formato UTC. Para convertir la hora local, utilice localtime_s.

  • time_t time_write
    Hora de la última escritura al archivo. Esta vez se almacena en formato UTC. Para convertir la hora local, utilice localtime_s.

  • _fsize_t size
    Longitud en bytes de un archivo.

  • char name [ _MAX_PATH]
    Nombre terminado en null del archivo o directorio con, sin la ruta.

En los sistemas de archivos que no admiten la creación y los tiempos de acceso pasan de un archivo, como el sistema GORDO, time_create y los campos de time_access siempre están – 1L.

_MAX_PATH se define en Stdlib.h en 260 bytes.

No puede especificar atributos de destino (como _A_RDONLY) para limitar la operación de búsqueda. Estos atributos se devuelven en el campo de attrib de la estructura de _finddata_t y pueden tener los valores siguientes (definidos en IO.h). Los usuarios no deben basarse en estos que son los únicos valores posibles para el campo de attrib .

  • _A_ARCH
    Archivo. Conjunto siempre que el archivo se modifique y borrado por el comando de BACKUP . Value: 0x20.

  • _A_HIDDEN
    Archivo oculto. Visto no normalmente con el comando de DIR, a menos que utilice la opción de /AH . Devuelve información sobre los archivos normales y los archivos que tienen este atributo. Value: 0x02.

  • _A_NORMAL
    Normal. El archivo no establecido ningún otro atributo y se puede leer o escribir sin en la restricción. Value: 0x00.

  • _A_RDONLY
    Sólo lectura. El archivo no se puede abrir para escribir y un archivo que tiene el mismo nombre no se puede crear. Value: 0x01.

  • _A_SUBDIR
    Subdirectorio. Value: 0x10.

  • _A_SYSTEM
    Archivo de sistema. Visto no normalmente al comando de DIR , a menos que se utilice la opción de /A o de /A:S . Value: 0x04.

_findnext encuentra el siguiente nombre, si existe, que coincide con el argumento de filespec especificado en una llamada anterior a _findfirst. El argumento de fileinfo debe señalar a una estructura inicializado por la llamada anterior a _findfirst. Si se encuentra una coincidencia, el contenido de la estructura de fileinfo cambian tal como se describió anteriormente. De lo contrario, queda sin modificar. _findclose cierra el identificador de búsqueda y libera especificados todos los recursos asociados para _findfirst y _findnext. El identificador devuelto por _findfirst o _findnext se debe pasar a _findclose, antes de que las operaciones de modificación, como eliminar, se pueden realizar en los directorios que forman las rutas pasadas a ellas.

Puede anidar las funciones de _find . Por ejemplo, si una llamada a _findfirst o a _findnext busca el archivo que es un subdirectorio, una nueva búsqueda se puede iniciar con otra llamada a _findfirst o a _findnext.

_wfindfirst y _wfindnext son versiones de caracteres anchos de _findfirst y de _findnext. El argumento de la estructura de las versiones de caracteres anchos tiene el tipo de datos de _wfinddata_t , que se define en IO.h y en Wchar.h. Los campos de este tipo de datos son los mismos que los del tipo de datos de _finddata_t , salvo que en _wfinddata_t el campo name es de wchar_t escrito en lugar de charescrito. Si no _wfindfirst y _wfindnext se comportan de forma idéntica a _findfirst y a _findnext.

_findfirst y _findnext utilizan el tipo de 64 bits del tiempo. Si debe utilizar el tipo antiguo de 32 bits del tiempo, puede definir _USE_32BIT_TIME_T. Las versiones de estas funciones que tienen el sufijo de 32 en sus nombres utilizan el tipo de 32 bits del tiempo, y a aquellos con el uso del sufijo de 64 el tipo de 64 bits del tiempo.

Funciona _findfirst32i64, _findnext32i64, _wfindfirst32i64, y _wfindnext32i64 también se comporta de forma idéntica a las versiones de 32 bits de tipo en tiempo de estas funciones a menos que utilizan y devuelven longitudes de 64 bits del archivo. Funciona _findfirst64i32, _findnext64i32, _wfindfirst64i32, y el usode _wfindnext64i32tiempo 64 bits tipo pero utiliza longitudes de 32 bits del archivo. Estas funciones utilizan las variaciones adecuadas de _finddata_t escrito que los campos tienen distintos tipos por tiempo y el tamaño del archivo.

_finddata_t es realmente una macro que se evalúa como _finddata64i32_t (o a _finddata32_t si se define _USE_32BIT_TIME_T ). La tabla siguiente se resumen las variaciones en _finddata_t:

Estructura

Tipo de tiempo

Tipo de tamaño de archivo

_finddata_t, _wfinddata_t

__time64_t

_fsize_t

_finddata32_t, _wfinddata32_t

__time32_t

_fsize_t

__finddata64_t, __wfinddata64_t

__time64_t

__int64

_finddata32i64_t, _wfinddata32i64_t

__time32_t

__int64

_finddata64i32_t, _wfinddata64i32_t

__time64_t

_fsize_t

_fsize_t es typedef para unsigned long (32 bits).

Ejemplo

// crt_find.c
// This program uses the 32-bit _find functions to print
// a list of all files (and their attributes) with a .C extension
// in the current directory.

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>

int main( void )
{
   struct _finddata_t c_file;
   intptr_t hFile;

   // Find first .c file in current directory 
   if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
      printf( "No *.c files in current directory!\n" );
   else
   {
      printf( "Listing of .c files\n\n" );
      printf( "RDO HID SYS ARC  FILE         DATE %25c SIZE\n", ' ' );
      printf( "--- --- --- ---  ----         ---- %25c ----\n", ' ' );
      do {
         char buffer[30];
         printf( ( c_file.attrib & _A_RDONLY ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_HIDDEN ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_SYSTEM ) ? " Y  " : " N  " );
         printf( ( c_file.attrib & _A_ARCH )   ? " Y  " : " N  " );
         ctime_s( buffer, _countof(buffer), &c_file.time_write );
         printf( " %-12s %.24s  %9ld\n",
            c_file.name, buffer, c_file.size );
      } while( _findnext( hFile, &c_file ) == 0 );
      _findclose( hFile );
   }
}
  

Vea también

Referencia

Llamadas del sistema