Partager via


_stat, _wstat, fonctions

Obtenir les informations d'état sur 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(str
   const char *path,
   struct _stat32i64 *buffer 
);
int _stat64i32(str
   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 qui contient le chemin d'accès du fichier existant ou du répertoire.

  • buffer
    Pointeur vers la structure qui stocke les résultats.

Valeur de retour

Chacune de ces fonctions retourne 0 si les informations d'état de fichier sont obtenues. Une valeur de retour de – 1 indique une erreur, auquel cas errno a la valeur ENOENT, indiquant 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 ; errno est également défini à EINVAL dans ce cas.

Notes

Si path contient l'emplacement d'un répertoire, il ne peut pas contenir une barre oblique inverse à la fin.Si tel est le cas, -1 est retourné et errno est défini sur ENOENT.

Consultez _doserrno, errno, _sys_errlist et _sys_nerr pour plus d'informations sur ceci et d'autres codes de retour.

Le tampon-date sur un fichier peut être représenté s'il est ultérieur à minuit, le 1er janvier 1970, et avant 23h59 : 59, le 31 décembre, 3000, UTC, à moins que vous n'utilisiez _stat32 ou _wstat32, ou que vous ayez défini _USE_32BIT_TIME_T, auquel cas la date peut être représentée uniquement jusqu'à 03:14:07 Le 19 janvier, 2038, UTC.

Notes

La fonction _stat obtient des informations sur le fichier ou le répertoire spécifié par path et les stocke dans la structure désignée par buffer. _stat gère automatiquement des arguments de chaîne de caractères multi-octets comme appropriés, en identifiant des séquences de caractères multi-octets d'après la page de codes multioctets en cours d'utilisation.

_wstat est une version à caractères larges de _stat; l'argument path vers _wstat est une chaîne à caractères larges. _wstat et _stat se comportent de la même manière que _wstat mais ne gèrent pas les chaînes de caractères multi-octets.

Les variations de ces fonctions prennent en charge les types d'heure 32 bits ou 64 bits et les fichiers de longueur 32 bits ou 64 bits. Le premier suffixe numérique (32 ou 64) indique la taille du type de temps 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 équivaut à _stat64i32 et struct _stat contient une heure 64 bits. Ceci s'applique à moins que _USE_32BIT_TIME_T ne soit défini, auquel cas le comportement antérieur est appliqué ; _stat utilise une heure 32 bits et struct _stat contient une heure 32 bits. La même remarque s'applique à _stati64.

Notes

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

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

Type d'Heure et Variation du Type de Longueur de Fichier de _stat

Fonctions

_USE_32BIT_TIME_T defined?

Type de Temps

Type de taille de fichier

_stat, _wstat

Non défini

64 bits

32 bits

_stat, _wstat

(défini par)

32 bits

32 bits

_stat32, _wstat32

Non affecté par la définition de macro

32 bits

32 bits

_stat64, _wstat64

Non affecté par la définition de macro

64 bits

64 bits

_stati64, _wstati64

Non défini

64 bits

64 bits

_stati64, _wstati64

(défini par)

32 bits

64 bits

_stat32i64, _wstat32i64

Non affecté par la définition de macro

32 bits

64 bits

_stat64i32, _wstat64i32

Non affecté par la définition de macro

64 bits

32 bits

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _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, inclut les champs suivants.

  • st_gid
    Identificateur numérique du groupe propriétaire du fichier (spécifique UNIX ) Ce champ sera toujours zéro sur les systèmes Windows. Un fichier redirigé est classé en tant que fichier Windows.

  • st_atime
    Heure du dernier accès au fichier. Valide sur les lecteurs de disques mis en formes NTFS mais pas FAT .

  • st_ctime
    Heure de création de fichier. Valide sur les lecteurs de disques mis en formes NTFS mais pas FAT .

  • st_dev
    Numéro de lecteur du disque contenant le fichier (de même que st_rdev).

  • st_ino
    Numéro du nœud d'information ( le inode) pour le fichier (UNIX- spécifique). Sur les systèmes de fichiers pour UNIX, le inode décrit les tampons de date et d'heure du fichier, les autorisations, et le contenu. Lorsque des fichiers sont fortement liés les uns aux autres, 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, ou NTFS.

  • st_mode
    Masque de bits des informations sur le 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 une unité. Les bits en lecture/écriture d'utilisateur sont définis selon le mode d'autorisation du fichier ; les bits d'exécution d'utilisateur sont définis selon l'extension du nom de fichier.

  • st_mtime
    Heure de la dernière modification du fichier.

  • st_nlink
    Toujours 1 sur des systèmes de fichiers non-NTFS.

  • st_rdev
    Numéro de lecteur du disque contenant le fichier (de même que st_dev).

  • st_size
    Taille du fichier en octets ; un entier de 64 bits pour les variations par rapport au suffixe i64**.**

  • st_uid
    Identificateur numérique de l'utilisateur propriétaire du fichier (UNIX- spécifique). Ce champ sera toujours zéro sur les systèmes Windows. Un fichier redirigé est classé en tant que fichier Windows.

Si path fait référence à une unité, st_size, plusieurs champs d'heure, st_dev, et les champs st_rdev dans la structure _stat sont sans 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.

Configuration requise

Routine

En-tête requis

En-têtes facultatifs

_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32

<sys/types.h> followed by <sys/stat.h>

<errno.h>

_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

<sys/types.h> followed by <sys/stat.h> or <wchar.h>

<errno.h>

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

Exemple

// 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 );
   }
}
  

Équivalent .NET Framework

Voir aussi

Référence

Gestion de fichiers

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp