_stat, fonctions de _wstat
Les informations d'état get 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 contenant le chemin d'accès au fichier ou au répertoire.buffer
Pointeur à structurer que stocke les résultats.
Valeur de retour
Chacune de ces fonctions retourne 0 si les informations de fichier-état sont obtenues.Une valeur de retour - 1 indique une erreur, dans ce cas errno est défini à ENOENT, indiquant que le nom et le chemin d'accès du fichier est introuvable.Une valeur de retour d' EINVAL indique qu'un paramètre non valide ; errno est également défini dans EINVAL dans ce cas.
[!REMARQUE]
si path contient l'emplacement d'un répertoire, il ne peut pas contenir une barre oblique inverse de fin.Si tel est le cas, -1 sera retourné et errno aura la valeur ENOENT.
Consultez _doserrno, errno, _sys_errlist, et _sys_nerr pour plus d'informations sur cette opération, ainsi que d'autres, les codes de retour.
Le tampon-date sur un fichier peut être représenté s'il est ultérieure à minuit, le 1er janvier 1970, et avant 23h59 : 59, le 31 décembre, 3000, l'heure UTC, sauf si vous utilisez _stat32 ou _wstat32, ou ont défini _USE_32BIT_TIME_T, auquel cas la date peut être représentée uniquement jusqu'à 3h14 : Le 7 janvier 19, 2038, l'heure UTC.
Notes
La fonction d' _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 les arguments de chaîne de caractères multioctets comme approprié, l'identification des séquences de caractères multioctets d'après la page de codes multioctets en cours de utilisation.
_wstat est une version à caractère élargi d' _stat; l'argument d' path à _wstat est une chaîne à caractères larges._wstat et _stat se comportent de la même façon qu'il _wstat ne gère pas les chaînes de caractères multioctets.
Les variations de ces fonctions prennent en charge 32 ou type d'heure 64 bits, et 32 ou longueurs 64 bits de fichier.le premier suffixe numérique (32 ou 64) indique la taille du type de temps utilisé ; le deuxième suffixe est i32 ou i64, indiquant si la taille du fichier est représentée sous la forme 32 bits ou entier 64 bits.
_stat équivaut à _stat64i32, et struct_stat contient l'heure 64 bits.Cela est vrai à moins qu' _USE_32BIT_TIME_T défini, dans ce cas l'ancien comportement est activé ; _stat utilise l'heure 32 bits, et struct_stat contient l'heure 32 bits.Il en va de même pour _stati64.
[!REMARQUE]
_wstat ne fonctionne pas avec les liens physiques de Windows Vista .Dans ces cas, _wstat utilise toujours une taille du fichier de 0._stat fonctionne correctement avec les liens physiques.
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 des paramètres.
Calculez des variations de type et de longueur de fichier du _stat
Fonctions |
_USE_32BIT_TIME_T défini ? |
type de temps |
Type de longueur du 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 de TCHAR.H |
_MBCS & de _UNICODE non défini |
_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 d' _stat , définie dans le système \STAT.H, inclut les champs suivants.
st_gid
L'identificateur numérique du groupe qui possède le fichier (UNIX-détail) ce champ est toujours zéro sur les systèmes Windows.Un fichier est redirigé classifié en tant que fichier Windows.st_atime
Heure du dernier accès.valide sur NTFS mais pas sur FAT a mis en forme des lecteurs de disques.st_ctime
Heure de création de fichier.valide sur NTFS mais pas sur FAT a mis en forme des lecteurs de disques.st_dev
Nombre de lecteur de disque contenant le fichier (même qu' st_rdev).st_ino
Numéro du nœud d'informations ( inode) du fichier (UNIX-détail).Sur les systèmes de fichiers UNIX, inode décrit les mémoires tampons, les autorisations, et le contenu de date et d'heure de fichier.Lorsque les fichiers dur-sont liés les uns aux autres, ils partagent même inode.inode, et par conséquent st_ino, n'a aucune signification dans FAT, le HPFS, ou les systèmes de fichiers NTFS.st_mode
masque de bits pour les informations de mode d'accès au fichier.le bit d' _S_IFDIR est défini si path spécifie un répertoire ; le bit d' _S_IFREG est défini si path spécifie un fichier ordinaire ou un périphérique.Les bits en lecture/écriture d'utilisateur sont définis selon le mode de l'autorisation de fichier ; l'utilisateur exécute les bits sont définis selon l'extension du nom de fichier.st_mtime
Heure de la dernière modification de fichiers.st_nlink
toujours 1 sur les systèmes de fichiers non-NTFS.st_rdev
Nombre de lecteur de disque contenant le fichier (même qu' st_dev).st_size
taille du fichier en octets ; entier 64 bits pour les variations par rapport au suffixe**.**d' i64st_uid
identificateur numérique de l'utilisateur qui possède le fichier (UNIX-détail).Ce champ est toujours zéro sur les systèmes Windows.Un fichier est redirigé classifié en tant que fichier Windows.
Si path fait référence à un périphérique, st_size, les champs individuels d'heure, l' st_dev, et champs de st_rdev dans la structure d' _stat sont sans signification.Étant donné que STAT.H utilise le type de _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> suivi <sys/stat.h> |
<errno.h> |
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 |
<sys/types.h> traçage ou <sys/stat.h> <wchar.h> |
<errno.h> |
Pour des informations de compatibilité supplémentaires, 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