_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
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32