_stat
, _stat32
, _stat64
, _stati64
, _stat32i64
, _stat64i32
, _wstat
, _wstat32
_wstat64
_wstati64
_wstat32i64
_wstat64i32
Obtenga información de estado sobre un archivo.
Sintaxis
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
);
Parámetros
path
Puntero a una cadena que contiene la ruta de acceso del directorio o el archivo existente.
buffer
Puntero a la estructura que almacena los resultados.
Valor devuelto
Cada una de estas funciones devuelve 0 si se obtiene la información de estado de archivo. Un valor devuelto de -1 indica un error, en cuyo caso errno
se establece ENOENT
en , lo que indica que no se encontró el nombre de archivo o la ruta de acceso. Un valor devuelto de EINVAL
indica un parámetro no válido; errno
también se establece en EINVAL
en este caso.
Para obtener más información sobre los códigos de retorno, vea errno
, _doserrno
, _sys_errlist
y _sys_nerr
.
La marca de fecha de un archivo se puede representar si es posterior a medianoche, 1 de enero de 1970 y antes de las 23:59:59, 31 de diciembre de 3000, UTC, a menos que use _stat32
o _wstat32
, o haya definido _USE_32BIT_TIME_T
, en cuyo caso la fecha solo se puede representar hasta las 23:59:59 del 18 de enero de 2038, UTC.
Comentarios
La función _stat
obtiene información sobre el archivo o el directorio especificado por path
y lo almacena en la estructura que señala buffer
. _stat
controla automáticamente argumentos de cadenas de caracteres multibyte según corresponda, reconociendo secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso.
_wstat
es una versión con caracteres anchos de _stat
; el argumento path
para _wstat
es una cadena de caracteres anchos. _wstat
y _stat
se comportan de manera idéntica, salvo que _wstat
no controla las cadenas de caracteres multibyte.
Las variaciones de estas funciones admiten tipos de tiempo de 32 o 64 bits y longitudes de archivo de 32 o 64 bits. El primer sufijo numérico (32
o 64
) indica el tamaño del tipo de tiempo usado; el segundo sufijo es i32
o i64
, lo que indica si el tamaño del archivo se representa como un entero de 32 o 64 bits.
_stat
es equivalente a _stat64i32
y struct _stat
contiene un tiempo de 64 bits, a menos _USE_32BIT_TIME_T
que se defina, en cuyo caso el comportamiento anterior está en vigor; _stat
usa un tiempo de 32 bits y struct _stat
contiene un tiempo de 32 bits. Lo mismo ocurre para _stati64
.
Nota:
_wstat
no funciona con vínculos simbólicos de Windows Vista. En estos casos, _wstat
siempre notificará un tamaño de archivo de 0. _stat
funciona correctamente con vínculos simbólicos.
La familia _stat
de funciones usa CreateFile
en Visual Studio 2015, en lugar de FindFirstFile
como en Visual Studio 2013 y versiones anteriores. Esto significa que _stat
en una ruta de acceso que termina con una barra diagonal se realiza correctamente si la ruta de acceso hace referencia a un directorio, en lugar de a antes de cuando la función produciría un error con errno
establecido en ENOENT
.
Esta función valida sus parámetros. Si o path
buffer
es NULL
, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Tipo de tiempo y variaciones de tipo de longitud de archivo de _stat
Funciones | _USE_32BIT_TIME_T definido |
Tipo de tiempo | Tipo de longitud de archivo |
---|---|---|---|
_stat , _wstat |
No definida | 64 bits | 32 bits |
_stat , _wstat |
Definido | 32 bits | 32 bits |
_stat32 , _wstat32 |
No se ve afectada por la definición de macro | 32 bits | 32 bits |
_stat64 , _wstat64 |
No se ve afectada por la definición de macro | 64 bits | 64 bits |
_stati64 , _wstati64 |
No definida | 64 bits | 64 bits |
_stati64 , _wstati64 |
Definido | 32 bits | 64 bits |
_stat32i64 , _wstat32i64 |
No se ve afectada por la definición de macro | 32 bits | 64 bits |
_stat64i32 , _wstat64i32 |
No se ve afectada por la definición de macro | 64 bits | 32 bits |
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
La estructura _stat
, que se define en SYS\STAT.H
, incluye los campos siguientes.
Campo | Descripción |
---|---|
st_gid |
Identificador numérico del grupo que posee el archivo (específico de UNIX). Este campo siempre será cero en sistemas Windows. Un archivo redirigido se clasifica como archivo Windows. |
st_atime |
Hora del último acceso del archivo. Válido en NTFS, pero no en unidades de disco con formato FAT. |
st_ctime |
Hora de creación del archivo. Válido en NTFS, pero no en unidades de disco con formato FAT. |
st_dev |
Número de unidad del disco que contiene el archivo (igual que st_rdev ). |
st_ino |
Número del nodo de información ( inode ) para el archivo (específico de UNIX). En sistemas de archivos UNIX, inode describe la fecha del archivo y las marcas de tiempo, los permisos y el contenido. Cuando los archivos se vinculan físicamente entre sí, comparten el mismo inode . inode y, por tanto, st_ino , no tiene ningún significado en los sistemas de archivos FAT, HPFS o NTFS. |
st_mode |
Máscara de bits para información de modo de archivo. El bit _S_IFDIR se establece si path especifica un directorio; el bit _S_IFREG se establece si path especifica un archivo normal o un dispositivo. Los bits de lectura y escritura de usuario se establecen según el modo de permiso del archivo; los bits de ejecución de usuario se establecen según la extensión del nombre de archivo. |
st_mtime |
Hora de la última modificación del archivo. |
st_nlink |
Siempre 1 en sistemas de archivos que no son NTFS. |
st_rdev |
Número de unidad del disco que contiene el archivo (igual que st_dev ). |
st_size |
Tamaño del archivo en bytes; entero de 64 bits para variaciones con el sufijo i64 . |
st_uid |
Identificador numérico del usuario propietario del archivo (específico de UNIX). Este campo siempre será cero en los sistemas Windows. Un archivo redirigido se clasifica como archivo Windows. |
Si path
hace referencia a un dispositivo, st_size
, varios campos de tiempo, st_dev
y los campos st_rdev
de la estructura _stat
no tienen sentido. Dado que STAT.H
usa el tipo _dev_t
, que se define en TYPES.H
, debe incluir TYPES.H
delante de STAT.H
en el código.
Requisitos
Routine | Encabezado necesario | Encabezados opcionales |
---|---|---|
_stat , _stat32 , _stat64 , _stati64 , , _stat32i64 , _stat64i32 |
<sys/types.h> seguido de <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , _wstati64 , , _wstat32i64 , _wstat64i32 |
<sys/types.h> seguido de <sys/stat.h> o <wchar.h> |
<errno.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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
Consulte también
Control de archivos
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, _fstati64
, , _fstat32i64
, _fstat64i32
_getmbcp
_setmbcp