Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
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