_find, fonctions de _wfind
La recherche de ces fonctions pour et précis des recherches pour les noms de fichier spécifié :
Notes
La fonction d' _findfirst fournit des informations sur la première instance d'un nom de fichier correspond au fichier spécifié dans l'argument d' filespec .Vous pouvez utiliser dans filespec n'importe quelle combinaison de caractères génériques qui est prise en charge par le système d'exploitation hôte.
Les informations sur le fichier de retour de fonctions dans une structure d'finddata_t _, qui est définie dans IO.h.les différentes fonctions dans la famille utilisent beaucoup de variations sur la structure d' _finddata_t .La structure de base d' _finddata_t inclut les éléments suivants :
unsigned attrib
attribut de fichier.time_t time_create
Heure de création de fichier (- 1L pour les systèmes de fichiers FAT).Cette fois-ci est enregistrée au format UTC.Pour convertir en heure locale, utilisez localtime_s.time_t time_access
Heure du dernier accès au fichier (- 1L pour les systèmes de fichiers FAT).Cette fois-ci est enregistrée au format UTC.Pour convertir en heure locale, utilisez localtime_s.time_t time_write
Heure de la dernière écriture au fichier.Cette fois-ci est enregistrée au format UTC.Pour convertir en heure locale, utilisez localtime_s._fsize_t size
longueur du fichier en octets.char name[ _MAX_PATH]
Nom se terminant par null de fichier ou de répertoire mis en correspondance par, sans chemin d'accès.
Dans les systèmes de fichiers qui ne prennent pas en charge la création et de derniers temps d'accès d'un fichier, tels que le GROS système, time_createet champs de time_accesssont toujours - 1L.
_MAX_PATHest défini dans Stdlib.h à 260 octets.
Vous ne pouvez pas spécifier des attributs cibles (par exemple _A_RDONLY) pour limiter l'opération de recherche.Ces attributs sont retournés dans le domaine de attrib de la structure d' _finddata_tet peuvent avoir les valeurs suivantes (définies dans IO.h).Les utilisateurs ne doivent pas compter sur ces derniers qui sont les seules valeurs possibles pour le champ d' attrib .
_A_ARCH
archive.Définissez chaque fois que le fichier est modifié et désactivé par ordre d' BACKUP .valeur : 0x20._A_HIDDEN
fichier masqué.En général pas vu avec la commande de DIR, sauf si vous utilisez l'option pour /AH .Informations de retour sur les fichiers normaux et les fichiers qui ont cet attribut.valeur : 0x02._A_NORMAL
Normal.Le fichier n'a pas d'autres attributs définis et peut être désigné ou écrit sans restriction.valeur : 0x00._A_RDONLY
En lecture seule.Le fichier ne peut pas être ouvert pour écriture et un fichier portant le même nom ne peut pas être créé.valeur : 0x01._A_SUBDIR
sous-répertoire.valeur : 0x10._A_SYSTEM
Fichier système.D'ordinaire pas vu avec la commande d' DIR , à moins que l'option d' /A ou d' /A:S sera utilisé.valeur : 0x04.
_findnext recherche le nom suivant, le cas échéant, correspondant à l'argument d' filespec spécifié dans un rappel à _findfirst.L'argument d' fileinfo doit pointer vers une structure initialisée par l'appel précédent à _findfirst.Si une correspondance est trouvée, le contenu de structure d' fileinfo est modifié comme décrit précédemment.Sinon, il demeure inchangé._findclose ferme le handle spécifié de recherche et libère toutes les ressources associées pour _findfirst et _findnext.Le handle retourné par _findfirst ou _findnext doit d'abord être passé à_findclose, avant que les opérations de modification, telles que la suppression, puissent être exécutées sur les répertoires qui forment des chemins d'accès passés à eux.
vous pouvez imbriquer les fonctions d' _find .par exemple, si un appel à _findfirst ou à _findnext recherche le fichier qui est un sous-répertoire, une nouvelle recherche peut être initialisée avec un autre appel à _findfirst ou à _findnext.
_wfindfirst et _wfindnext sont des versions à caractères larges d' _findfirst et d' _findnext.L'argument de structure des versions à caractères larges a le type de données d' _wfinddata_t , défini dans IO.h et dans Wchar.h.Les champs de ce type de données sont identiques à celles du type de données d' _finddata_t , sauf que dans _wfinddata_t le champ nom est de type wchar_t au lieu de type char.Sinon _wfindfirst et _wfindnext se comportent de manière identique à _findfirst et à _findnext.
_findfirst et _findnext utilisent le type d'heure 64 bits.Si vous devez utiliser le type ancien d'heure 32 bits, vous pouvez définir _USE_32BIT_TIME_T.Les versions de ces fonctions qui ont le suffixe d' 32 dans leurs noms utilisent le type d'heure 32 bits, et ceux dont l'utilisation de suffixe d' 64 le type d'heure 64 bits.
Fonctionne _findfirst32i64, _findnext32i64, _wfindfirst32i64, et _wfindnext32i64 se comportent également de manière identique aux versions de type d'heure 32 bits de ces fonctions à l'exception de les longueurs 64 bits de retour de fichier d'utiliser et.fonctionne _findfirst64i32, _findnext64i32, _wfindfirst64i32, et l'utilisationd' _wfindnext64i32le type d'heure 64 bits mais utilise des longueurs 32 bits de fichier.Ces variantes appropriées n'utilise des fonctions d' _finddata_t dans les champs ont différents types de temps et la taille du fichier.
_finddata_t est une macro qui correspond à _finddata64i32_t (ou à _finddata32_t si _USE_32BIT_TIME_T est défini).Le tableau suivant résume les variations la _finddata_t:
Structure |
type de temps |
type de taille de fichier |
---|---|---|
_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 est typedef pour unsigned long (32 bits).
Exemple
// 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 );
}
}