_find, funciones de _wfind

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_createy los campos de time_accesssiempre están – 1L.

_MAX_PATHse 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_ty pueden tener los valores siguientes (definido 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 .valor: 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.valor: 0x02.

  • _A_NORMAL
    Normal.El archivo no establecido ningún otro atributo y se puede leer o escribir sin en la restricción.valor: 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.valor: 0x01.

  • _A_SUBDIR
    subdirectorio.valor: 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 .valor: 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 _USE_32BIT_TIME_T es definido).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