_find, funzioni di _wfind
Queste funzioni consentono e chiudere le ricerche dei nomi file specificati:
Note
_findfirst la funzione vengono fornite informazioni sulla prima istanza di un nome file corrispondente al file specificato in filespec argomento.È possibile utilizzare in filespec qualsiasi combinazione di caratteri jolly supportata dal sistema operativo host.
Le informazioni sul file di ritorno di funzioni in un _finddata_t struttura, definita in IO.h.Le varie funzioni della famiglia utilizzano molte varianti su _finddata_t struttura.la base _finddata_t la struttura include i seguenti elementi:
unsigned attrib
Attributo del file.time_t time_create
Periodo di creazione del file (- 1L per i file system FAT).Questa volta viene archiviata in formato UTC.Per convertire all'ora locale, utilizzare localtime_s.time_t time_access
Ora dell'ultimo accesso ai file (- 1L per i file system FAT).Questa volta viene archiviata in formato UTC.Per convertire all'ora locale, utilizzare localtime_s.time_t time_write
Il periodo esempio scrivere nel file.Questa volta viene archiviata in formato UTC.Per convertire all'ora locale, utilizzare localtime_s._fsize_t size
Lunghezza in byte del file.char name[ _MAX_PATH]
Nome con terminazione null del corrispondente file o di directory, senza il percorso.
In file system che non supportano la creazione e gli ultimi tempi di accesso di un file, ad esempio il sistema FAT, time_createe time_accessi campi sono sempre - 1L.
_MAX_PATHviene definito in Definito come 260 byte.
Non è possibile specificare gli attributi di destinazione (ad esempio _A_RDONLY) per limitare l'operazione di ricerca.Questi attributi vengono restituiti in attrib campo _finddata_tla struttura e può disporre dei seguenti valori (definiti in IO.h).Gli utenti non devono basarsi su questi che sono gli unici valori possibili per attrib campo.
_A_ARCH
archivio.Impostare ogni volta che viene modificato il file e cancellato da BACKUP comando.valore: 0x20._A_HIDDEN
file nascosto.Precedenza non in genere con il comando DIR di, a meno che non si utilizzi /AH opzione.Restituisce informazioni sugli schedari diretti e i file con questo attributo.valore: 0x02._A_NORMAL
Normale.Il file non sono stati impostati altri attributi e può essere visualizzato o scritto a senza restrizioni.valore: 0x00._A_RDONLY
Sola lettura.Il file non può essere aperto per la scrittura e un file con lo stesso nome può essere creato.valore: 0x01._A_SUBDIR
sottodirectory.valore: 0x10._A_SYSTEM
File di sistema.Non in genere visualizzato con DIR comando, a meno che /A o /A:S viene utilizzata l'opzione.valore: 0x04.
_findnext cerca il nome seguente, se presente, che corrisponde a filespec argomento specificato in una chiamata precedente a _findfirst.fileinfo l'argomento deve puntare a una struttura inizializzata dalla chiamata precedente a _findfirst.Se viene individuata una corrispondenza, fileinfo il contenuto della struttura vengono modificati come descritto in precedenza.In caso contrario, viene lasciato invariato._findclose chiudere l'handle di ricerca specificato e libera tutte le risorse associate per entrambi _findfirst e _findnext.Gli handle restituiti dall'una o l'altra _findfirst o _findnext deve prima essere passato a_findclose, prima che le operazioni di modifica, eliminando ad esempio, possono essere eseguite sulle directory che costituiscono i percorsi passati tra essi.
È possibile annidare _find funzioni.Ad esempio, se una chiamata a _findfirst o _findnext individuare il file che è una sottodirectory, una nuova ricerca può essere avviato con un'altra chiamata a _findfirst o _findnext.
_wfindfirst e _wfindnext nelle versioni a caratteri estesi di _findfirst e _findnext.L'argomento della struttura della versione a caratteri estesi ha _wfinddata_t tipo di dati, definito in IO.h e in Wchar.h.I campi di questo tipo di dati sono gli stessi di quelle di _finddata_t tipo di dati, con la differenza che in _wfinddata_t il campo del nome è di tipo wchar_t invece di tipo char.In caso contrario _wfindfirst e _wfindnext comportano in modo identico a _findfirst e _findnext.
_findfirst e _findnext utilizzare il tipo di tempo a 64 bit.Se è necessario utilizzare il tipo precedente di tempo a 32 bit, è possibile definire _USE_32BIT_TIME_T.le versioni di queste funzioni che hanno 32 il suffisso dei rispettivi nomi utilizza il tipo di tempo a 32 bit e quelli con 64 utilizzo del suffisso il tipo di tempo a 64 bit.
funzioni _findfirst32i64, _findnext32i64, _wfindfirst32i64e _wfindnext32i64 anche comportano esattamente come le versioni del tipo di tempo a 32 bit di queste funzioni a meno che utilizzino e restituiscano le lunghezze dei file a 64 bit.funzioni _findfirst64i32, _findnext64i32, _wfindfirst64i32e _wfindnext64i32utilizzare il tipo di tempo a 64 bit ma utilizzare le lunghezze dei file a 32 bit.Queste variazioni appropriate di utilizzo di funzioni di _finddata_t digitare nei campi che hanno tipi diversi per il tempo e le dimensioni del file.
_finddata_t è in realtà una macro che restituisce _finddata64i32_t o _finddata32_t se _USE_32BIT_TIME_T viene definito).Nella tabella seguente vengono riepilogate le variazioni su _finddata_t:
Struttura |
tipo di tempo |
Tipo di file di dimensioni |
---|---|---|
_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 è un oggetto typedef per unsigned long (32 bit).
Esempio
// 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 );
}
}