Funzioni di ricerca dei nomi fileFilename Search Functions

Queste funzioni eseguono e terminano le ricerche per i nomi di file specificati:These functions search for and close searches for specified file names:

NoteRemarks

La funzione _findfirst fornisce informazioni sulla prima istanza di un nome file che corrisponde al file specificato nell'argomento filespec .The _findfirst function provides information about the first instance of a file name that matches the file specified in the filespec argument. In filespec è possibile usare qualsiasi combinazione di caratteri jolly supportata dal sistema operativo host.You can use in filespec any combination of wildcard characters that is supported by the host operating system.

Le funzioni restituiscono informazioni sui file in una struttura _finddata_t, definita in IO.h.The functions return file information in a _finddata_t structure, which is defined in IO.h. Le diverse funzioni della famiglia di prodotti usano più varianti nella struttura _finddata_t .Various functions in the family use many variations on the _finddata_t structure. La struttura _finddata_t di base include i seguenti elementi:The basic _finddata_t structure includes the following elements:

unsigned attrib
Attributo del file.File attribute.

time_t time_create
Ora di creazione del file (-1L per file system FAT).Time of file creation (-1L for FAT file systems). Questo orario viene archiviato in formato UTC.This time is stored in UTC format. Per convertirlo nell'ora locale, usare localtime_s.To convert to the local time, use localtime_s.

time_t time_access
Ora dell'ultimo accesso al file (-1L per i file system FAT).Time of the last file access (-1L for FAT file systems). Questo orario viene archiviato in formato UTC.This time is stored in UTC format. Per convertirlo nell'ora locale, usare localtime_s.To convert to the local time, use localtime_s.

time_t time_write
Ora dell'ultima scrittura nel file.Time of the last write to file. Questo orario viene archiviato in formato UTC.This time is stored in UTC format. Per convertirlo nell'ora locale, usare localtime_s.To convert to the local time, use localtime_s.

_fsize_t size
Lunghezza del file in byte.Length of the file in bytes.

char name[ _MAX_PATH]char name[ _MAX_PATH]
Nome con terminazione Null del file o della directory corrispondente, senza il percorso.Null-terminated name of matched file or directory, without the path.

Nei file system che non supportano le ore di creazione e di ultimo accesso di un file, ad esempio i file system FAT, i campi time_create e time_access sono sempre -1L.In file systems that do not support the creation and last access times of a file, such as the FAT system, the time_create and time_access fields are always -1L.

_MAX_PATH è definito in Stdlib.h come 260 byte._MAX_PATH is defined in Stdlib.h as 260 bytes.

Non è possibile specificare gli attributi di destinazione (ad esempio _A_RDONLY) per limitare l'operazione di ricerca.You cannot specify target attributes (such as _A_RDONLY) to limit the find operation. Questi attributi vengono restituiti nel campo attrib della struttura _finddata_t e possono includere i valori seguenti (definiti in IO.h).These attributes are returned in the attrib field of the _finddata_t structure and can have the following values (defined in IO.h). Gli utenti non devono considerarli gli unici valori possibili per il campo attrib .Users should not rely on these being the only values possible for the attrib field.

_A_ARCH
Archiviazione.Archive. Viene impostato ogni volta che il file viene modificato ed eliminato dal comando BACKUP .Set whenever the file is changed and cleared by the BACKUP command. Valore: 0x20.Value: 0x20.

_A_HIDDEN
File nascosto.Hidden file. In genere non viene visualizzato con il comando DIR, a meno che non venga usata l'opzione /AH .Not generally seen with the DIR command, unless you use the /AH option. Restituisce informazioni sui file con questo attributo e sui file normali.Returns information about normal files and files that have this attribute. Valore: 0x02.Value: 0x02.

_A_NORMAL
Normale.Normal. File non contiene altri set di attributi e può essere letto o scritto senza alcuna restrizione.File has no other attributes set and can be read or written to without restriction. Valore: 0x00.Value: 0x00.

_A_RDONLY
Sola lettura.Read-only. Il file non può essere aperto per la scrittura e non è possibile creare un file con lo stesso nome.File cannot be opened for writing and a file that has the same name cannot be created. Valore: 0x01.Value: 0x01.

_A_SUBDIR
Sottodirectory.Subdirectory. Valore: 0x10.Value: 0x10.

_A_SYSTEM
File di sistema.System file. In genere non viene visualizzato con il comando DIR , a meno che venga usata l'opzione /A o /A:S .Not ordinarily seen with the DIR command, unless the /A or /A:S option is used. Valore: 0x04.Value: 0x04.

_findnext trova il nome successivo, se presente, che corrisponde all'argomento filespec specificato in una precedente chiamata a _findfirst._findnext finds the next name, if any, that matches the filespec argument specified in an earlier call to _findfirst. L'argomento fileinfo deve puntare a una struttura inizializzata dalla chiamata precedente a _findfirst.The fileinfo argument should point to a structure initialized by the previous call to _findfirst. Se viene trovata una corrispondenza, i contenuti della struttura fileinfo vengono modificati come descritto in precedenza.If a match is found, the fileinfo structure contents are changed as described earlier. In caso contrario, vengono lasciati invariati.Otherwise, it is left unchanged. _findclose chiude l'handle di ricerca specificato e rilascia tutte le risorse associate per _findfirst e _findnext._findclose closes the specified search handle and releases all associated resources for both _findfirst and _findnext. L'handle restituito da _findfirst o _findnext deve essere passato a _findcloseprima di eseguire operazioni di modifica, ad esempio l'eliminazione, nelle directory che formano i percorsi passati a tali operazioni.The handle returned by either _findfirst or _findnext must first be passed to _findclose, before modification operations, such as deleting, can be performed on the directories that form the paths passed to them.

È possibile annidare le funzioni _find .You can nest the _find functions. Ad esempio, se una chiamata a _findfirst o _findnext trova il file che corrisponde a una sottodirectory, è possibile avviare una nuova ricerca con un'altra chiamata a _findfirst o _findnext.For example, if a call to _findfirst or _findnext finds the file that is a subdirectory, a new search can be initiated with another call to _findfirst or _findnext.

_wfindfirst e _wfindnext sono versioni a caratteri wide di _findfirst e _findnext._wfindfirst and _wfindnext are wide-character versions of _findfirst and _findnext. L'argomento della struttura delle versioni a caratteri wide contiene il tipo di dati _wfinddata_t definito in IO.h e WCHAR.h.The structure argument of the wide-character versions has the _wfinddata_t data type, which is defined in IO.h and in Wchar.h. I campi di questo tipo di dati sono identici a quelli del tipo di dati _finddata_t , ad eccezione del campo del nome in _wfinddata_t , che è di tipo wchar_t anziché char.The fields of this data type are the same as those of the _finddata_t data type, except that in _wfinddata_t the name field is of type wchar_t instead of type char. Per il resto, _wfindfirst e _wfindnext si comportano in modo identico a _findfirst e _findnext.Otherwise _wfindfirst and _wfindnext behave identically to _findfirst and _findnext.

_findfirst e _findnext usano il tipo Time a 64 bit._findfirst and _findnext use the 64-bit time type. Se è necessario usare il precedente tipo Time a 32 bit, è possibile definire _USE_32BIT_TIME_T.If you must use the old 32-bit time type, you can define _USE_32BIT_TIME_T. Le versioni di queste funzioni che contengono il suffisso 32 nei nomi usano il tipo Time a 32 bit, mentre quelle con il suffisso 64 usano il tipo Time a 64 bit.The versions of these functions that have the 32 suffix in their names use the 32-bit time type, and those with the 64 suffix use the 64-bit time type.

Anche le funzioni _findfirst32i64, _findnext32i64, _wfindfirst32i64e _wfindnext32i64 si comportano in modo analogo alle versioni di tipo Time a 32 bit ma usano e restituiscono lunghezze di file a 64 bit.Functions _findfirst32i64, _findnext32i64, _wfindfirst32i64, and _wfindnext32i64 also behave identically to the 32-bit time type versions of these functions except they use and return 64-bit file lengths. Anche le funzioni _findfirst64i32, _findnext64i32, _wfindfirst64i32e _wfindnext64i32 usano il tipo Time a 64 bit ma lunghezze di file a 32 bit.Functions _findfirst64i32, _findnext64i32, _wfindfirst64i32, and _wfindnext64i32 use the 64-bit time type but use 32-bit file lengths. Queste funzioni usano le varianti appropriate del tipo _finddata_t in cui i campi hanno tipi diversi per Time e File size.These functions use appropriate variations of the _finddata_t type in which the fields have different types for the time and the file size.

_finddata_t è una macro che restituisce _finddata64i32_t (o _finddata32_t se _USE_32BIT_TIME_T è definito)._finddata_t is actually a macro that evaluates to _finddata64i32_t (or _finddata32_t if _USE_32BIT_TIME_T is defined). La tabella seguente riepiloga le variazioni in _finddata_t:The following table summarizes the variations on _finddata_t:

StrutturaStructure Tipo TimeTime type Tipo File sizeFile size type
_finddata_t, _wfinddata_t_finddata_t, _wfinddata_t __time64_t _fsize_t
_finddata32_t, _wfinddata32_t_finddata32_t, _wfinddata32_t __time32_t _fsize_t
__finddata64_t, __wfinddata64_t__finddata64_t, __wfinddata64_t __time64_t __int64
_finddata32i64_t, _wfinddata32i64_t_finddata32i64_t, _wfinddata32i64_t __time32_t __int64
_finddata64i32_t, _wfinddata64i32_t_finddata64i32_t, _wfinddata64i32_t __time64_t _fsize_t

_fsize_t è typedef per unsigned long (32 bit)._fsize_t is a typedef for unsigned long (32 bits).

EsempioExample

// 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 );  
   }  
}  
Listing of .c files  

RDO HID SYS ARC  FILE         DATE                           SIZE  
--- --- --- ---  ----         ----                           ----  
 N   N   N   Y   blah.c       Wed Feb 13 09:21:42 2002       1715  
 N   N   N   Y   test.c       Wed Feb 06 14:30:44 2002        312  

Vedere ancheSee Also

Chiamate di sistemaSystem Calls