_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

 

Date de publication : novembre 2016

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Obtenir des informations sur l’état d’un fichier.

int _stat(  
   const char *path,  
   struct _stat *buffer   
);  
int _stat32(  
   const char *path,  
   struct __stat32 *buffer   
);  
int _stat64(  
   const char *path,  
   struct __stat64 *buffer   
);  
int _stati64(  
   const char *path,  
   struct _stati64 *buffer   
);  
int _stat32i64(  
   const char *path,  
   struct _stat32i64 *buffer   
);  
int _stat64i32(  
   const char *path,  
   struct _stat64i32 *buffer   
);  
int _wstat(  
   const wchar_t *path,  
   struct _stat *buffer   
);  
int _wstat32(  
   const wchar_t *path,  
   struct __stat32 *buffer   
);  
int _wstat64(  
   const wchar_t *path,  
   struct __stat64 *buffer   
);  
int _wstati64(  
   const wchar_t *path,  
   struct _stati64 *buffer   
);  
int _wstat32i64(  
   const wchar_t *path,  
   struct _stat32i64 *buffer   
);  
int _wstat64i32(  
   const wchar_t *path,  
   struct _stat64i32 *buffer   
);  

Paramètres

path
Pointeur vers une chaîne contenant le chemin d’accès du fichier ou répertoire existant.

buffer
Pointeur vers une structure qui stocke les résultats.

Chacune de ces fonctions retourne 0 si les informations sur l’état des fichiers sont obtenues. Une valeur de retour de -1 indique une erreur. Dans ce cas, errno prend la valeur ENOENT, ce qui indique que le nom de fichier ou le chemin d’accès est introuvable. Une valeur de retour de EINVAL indique un paramètre non valide ; dans ce cas, errno prend également la valeur EINVAL.

Pour plus d’informations sur ce code de retour et sur les autres codes, consultez _doserrno, errno, _sys_errlist, and _sys_nerr.

L’horodatage d’un fichier peut être représenté si celle-ci est ultérieure au 1er janvier 1970 à minuit et avant le 23:59:59 le 31 décembre 3000 UTC, sauf si vous utilisez _stat32 ou _wstat32, ou vous avez défini _USE_32BIT_TIME_T, auquel cas la date peut être représentée uniquement jusqu'à 23:59:59 18 janvier 2038, UTC.

La fonction _stat obtient des informations sur le fichier ou le répertoire spécifié par path et les stocke dans la structure vers laquelle buffer pointe._stat gère automatiquement les arguments de chaîne de caractères multioctets si nécessaire, en identifiant les séquences de caractères multioctets en fonction de la page de codes multioctets en cours d’utilisation.

_wstat est une version à caractères larges de _stat ; l'argument path de _wstat est une chaîne à caractères larges._wstat et _stat se comportent de la même manière, sauf que _wstat ne gère pas les chaînes de caractères multioctets.

Les variantes de ces fonctions prennent en charge les types d’heures 32 ou 64 bits et les longueurs de fichiers 32 ou 64 bits. Le premier suffixe numérique (32 ou 64) indique la taille du type d’heure utilisé ; le deuxième suffixe est i32 ou i64, qui indique si la taille du fichier est représentée comme un entier 32 bits ou 64 bits.

_stat est équivalent à _stat64i32, et struct``_stat contient une heure de 64 bits. Cela est vrai, sauf si _USE_32BIT_TIME_T est défini, auquel cas l’ancien comportement en vigueur, _stat utilise une durée de 32 bits, et struct``_stat contient une heure de 32 bits. La même remarque s’applique à _stati64.

System_CAPS_ICON_note.jpg Remarque

_wstat ne fonctionne pas avec des liens symboliques Windows Vista. Dans ce cas, _wstat indique toujours une taille de fichier de 0._stat fonctionne correctement avec les liens symboliques.

Cette fonction valide ses paramètres. Si path ou buffer est NULL, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre.

Variantes de type d’heure et de type de longueur de fichier de _stat

Fonctions_USE_32BIT_TIME_T défini ?Type d’heureType de longueur de fichier
_stat, _wstatNon défini64 bits32 bits
_stat, _wstatDéfini32 bits32 bits
_stat32, _wstat32Non affecté par la définition de macro32 bits32 bits
_stat64, _wstat64Non affecté par la définition de macro64 bits64 bits
_stati64, _wstati64Non défini64 bits64 bits
_stati64, _wstati64Défini32 bits64 bits
_stat32i64, _wstat32i64Non affecté par la définition de macro32 bits64 bits
_stat64i32, _wstat64i32Non affecté par la définition de macro64 bits32 bits

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tstat_stat_stat_wstat
_tstat64_stat64_stat64_wstat64
_tstati64_stati64_stati64_wstati64
_tstat32i64_stat32i64_stat32i64_wstat32i64
_tstat64i32_stat64i32_stat64i32_wstat64i32

La structure _stat, définie dans SYS\STAT. H, contient les champs suivants.

st_gid
Identificateur numérique du groupe propriétaire du fichier (propre à UNIX). Ce champ est toujours zéro sur les systèmes Windows. Un fichier de redirection est classé comme un fichier Windows.

st_atime
Heure du dernier accès au fichier. Valide sur NTFS, mais pas sur les lecteurs de disque au format FAT.

st_ctime
Heure de création du fichier. Valide sur NTFS, mais pas sur les lecteurs de disque au format FAT.

st_dev
Numéro de lecteur du disque contenant le fichier (identique à st_rdev).

st_ino
Numéro du nœud d’informations (le inode) du fichier (propre à UNIX). Sur les systèmes de fichiers UNIX, le inode décrit la date et l’heure du fichier, les horodatages, les autorisations et le contenu. Lorsque les fichiers sont liés par des liens physiques, ils partagent le même inode. Le inode, et par conséquent st_ino, n’a aucune signification dans les systèmes de fichiers FAT, HPFS et NTFS.

st_mode
Masque de bits pour les informations relatives au mode de fichier. Le bit _S_IFDIR est défini si path spécifie un répertoire. Le bit _S_IFREG est défini si path spécifie un fichier ordinaire ou un périphérique. Les bits de lecture/écriture utilisateur sont définis en fonction du mode d’autorisation du fichier. Les bits d’exécution utilisateur sont définis en fonction de l’extension de nom de fichier.

st_mtime
Heure de dernière modification du fichier.

st_nlink
Toujours 1 sur les systèmes de fichiers autres que NTFS.

st_rdev
Numéro de lecteur du disque contenant le fichier (identique à st_dev).

st_size
Taille du fichier en octets. Entier 64 bits pour les variantes avec le suffixe i64.

st_uid
Identificateur numérique de l’utilisateur propriétaire du fichier (propre à UNIX). Ce champ est toujours zéro sur les systèmes Windows. Un fichier de redirection est classé comme un fichier Windows.

Si path fait référence à un périphérique, le st_size, divers champs d’heure et les champs st_dev et st_rdev dans la structure _stat n’ont aucune signification. Étant donné que STAT.H utilise le type _dev_t défini dans TYPES.H, vous devez inclure TYPES.H avant STAT.H dans votre code.

RoutineEn-tête requisEn-têtes facultatifs
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32<sys/types.h> suivi de <sys/stat.h><errno.h>
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32<sys/types.h> suivi de <sys/stat.h> ou <wchar.h><errno.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

// crt_stat.c  
// This program uses the _stat function to  
// report information about the file named crt_stat.c.  
  
#include <time.h>  
#include <sys/types.h>  
#include <sys/stat.h>  
#include <stdio.h>  
#include <errno.h>  
  
int main( void )  
{  
   struct _stat buf;  
   int result;  
   char timebuf[26];  
   char* filename = "crt_stat.c";  
   errno_t err;  
  
   // Get data associated with "crt_stat.c":   
   result = _stat( filename, &buf );  
  
   // Check if statistics are valid:   
   if( result != 0 )  
   {  
      perror( "Problem getting information" );  
      switch (errno)  
      {  
         case ENOENT:  
           printf("File %s not found.\n", filename);  
           break;  
         case EINVAL:  
           printf("Invalid parameter to _stat.\n");  
           break;  
         default:  
           /* Should never be reached. */  
           printf("Unexpected error in _stat.\n");  
      }  
   }  
   else  
   {  
      // Output some of the statistics:   
      printf( "File size     : %ld\n", buf.st_size );  
      printf( "Drive         : %c:\n", buf.st_dev + 'A' );  
      err = ctime_s(timebuf, 26, &buf.st_mtime);  
      if (err)  
      {  
         printf("Invalid arguments to ctime_s.");  
         exit(1);  
      }  
      printf( "Time modified : %s", timebuf );  
   }  
}  

File size     : 732 Drive         : C: Time modified : Thu Feb 07 14:39:36 2002  

Gestion de fichiers
_access, _waccess
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_getmbcp
_setmbcp

Afficher: