_stat
, _stat32
, _stat64
, _stati64
, _stat32i64
_wstat64
_stat64i32
_wstat32i64
_wstat
_wstat32
_wstati64
,_wstat64i32
Obtenha informações de status em um arquivo.
Sintaxe
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
Ponteiro para uma cadeia de caracteres contendo o caminho do arquivo ou diretório existente.
buffer
Ponteiro para estrutura que armazena os resultados.
Valor retornado
Cada uma dessas funções retornará 0 se as informações de status do arquivo forem obtidas. Um valor retornado de -1 indica um erro, caso errno
em que é definido como ENOENT
, indicando que o nome do arquivo ou o caminho não pôde ser encontrado. Um valor retornado EINVAL
indica um parâmetro inválido; errno
também é definido como EINVAL
nesse caso.
Para obter mais informações sobre códigos de retorno, confira errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
O carimbo de data em um arquivo pode ser representado se for posterior à meia-noite de 1º de janeiro de 1970 e antes de 23:59:59 de 31 de dezembro de 3000 UTC, a menos que você use _stat32
ou _wstat32
, ou tenha definido _USE_32BIT_TIME_T
, caso em que a data pode ser representada somente até 23:59:59 de 18 de janeiro de 2038, UTC.
Comentários
A função _stat
obtém informações sobre o arquivo ou o diretório especificados por path
e as armazena na estrutura apontada por buffer
. _stat
manipula automaticamente argumentos de cadeia de caracteres multibyte conforme apropriado, reconhecendo sequências de caracteres multibyte de acordo com a página de código multibyte que está sendo usada no momento.
A função _wstat
é uma versão de caractere largo da função _stat
; o argumento path
para _wstat
é uma cadeia de caracteres larga. _wstat
e _stat
têm comportamento idêntico, exceto pelo fato de que _wstat
não manipula cadeias de caracteres multibyte.
Variações dessas funções dão suporte a tipos de tempo de 32 bits ou 64 bits e comprimentos de arquivo de 32 bits ou 64 bits. O primeiro sufixo numérico (32
ou 64
) indica o tamanho do tipo de hora usado; o segundo sufixo é i32
ou i64
, que indica se o tamanho do arquivo é representado como um inteiro de 32 ou de 64 bits.
_stat
é equivalente a _stat64i32
, e struct _stat
contém um tempo de 64 bits, a menos que _USE_32BIT_TIME_T
seja definido, caso em que o comportamento antigo está em vigor; _stat
usa um tempo de 32 bits e struct _stat
contém um tempo de 32 bits. O mesmo vale para _stati64
.
Observação
_wstat
não funciona com links simbólicos do Windows Vista. Nesses casos, _wstat
sempre relatará um tamanho do arquivo de 0. _stat
funciona corretamente com links simbólicos.
A família _stat
de funções usa CreateFile
no Visual Studio 2015, em vez de FindFirstFile
como no Visual Studio 2013 e anterior. Isso significa que _stat
em um caminho que termina com uma barra terá êxito se o caminho se referir a um diretório, em vez de antes, quando a função cometesse um erro com errno
definida como ENOENT
.
Essa função valida seus parâmetros. Se for ou buffer
path
for NULL
, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Variações de tipo de hora e de tipo de tamanho de arquivo de _stat
Funções | _USE_32BIT_TIME_T definido |
Tipo de hora | Tipo de tamanho de arquivo |
---|---|---|---|
_stat , _wstat |
Não definido | 64 bits | 32 bits |
_stat , _wstat |
Definido | 32 bits | 32 bits |
_stat32 , _wstat32 |
Não afetado pela definição de macro | 32 bits | 32 bits |
_stat64 , _wstat64 |
Não afetado pela definição de macro | 64 bits | 64 bits |
_stati64 , _wstati64 |
Não definido | 64 bits | 64 bits |
_stati64 , _wstati64 |
Definido | 32 bits | 64 bits |
_stat32i64 , _wstat32i64 |
Não afetado pela definição de macro | 32 bits | 64 bits |
_stat64i32 , _wstat64i32 |
Não afetado pela definição de macro | 64 bits | 32 bits |
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não 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 |
A estrutura _stat
, definida em SYS\STAT.H
, contém os campos a seguir.
Campo | Descrição |
---|---|
st_gid |
Identificador numérico do grupo que possui o arquivo (específico do UNIX). Esse campo sempre será zero em sistemas Windows. Um arquivo redirecionado é classificado como um arquivo do Windows. |
st_atime |
Hora do último acesso ao arquivo. Válido em unidades de disco formatadas como NTFS, mas não naquelas formatadas como FAT. |
st_ctime |
Hora de criação do arquivo. Válido em unidades de disco formatadas como NTFS, mas não naquelas formatadas como FAT. |
st_dev |
Número da unidade do disco que contém o arquivo (o mesmo que st_rdev ). |
st_ino |
Número do nó de informações (o inode ) para o arquivo (específico do UNIX). Em sistemas de arquivos UNIX, o inode descreve a data do arquivo e carimbos de data/hora, permissões e conteúdo. Quando arquivos são vinculados fisicamente uns aos outros, eles compartilham o mesmo inode . inode e, portanto, st_ino , não tem nenhum significado nos sistemas de arquivos FAT, HPFS ou NTFS. |
st_mode |
Máscara de bits para informações sobre o modo de arquivo. O _S_IFDIR bit é definido se path especifica um diretório; o bit _S_IFREG é definido se path especifica um arquivo comum ou um dispositivo. Bits de leitura/gravação do usuário são definidos de acordo com o modo de permissão do arquivo; bits de execução do usuário são definidos de acordo com a extensão de nome de arquivo. |
st_mtime |
Hora da última modificação do arquivo. |
st_nlink |
Sempre 1 em sistemas de arquivos diferentes de NTFS. |
st_rdev |
Número da unidade do disco que contém o arquivo (o mesmo que st_dev ). |
st_size |
Tamanho do arquivo em bytes. um inteiro de 64 bits para variações com o sufixo i64 . |
st_uid |
Identificador numérico do usuário que possui o arquivo (específico do UNIX). Esse campo sempre será zero em sistemas Windows. Um arquivo redirecionado é classificado como um arquivo do Windows. |
Se path
refere-se a um dispositivo, o st_size
, campos de hora diversos, st_dev
e campos st_rdev
na estrutura _stat
não têm importância. Como STAT.H
usa o tipo _dev_t
que é definido em TYPES.H
, você precisa incluir TYPES.H
antes de STAT.H
no código.
Requisitos
Rotina | Cabeçalho necessário | Cabeçalhos opcionais |
---|---|---|
_stat , _stat32 , _stat64 , _stati64 , _stat32i64 , , _stat64i32 |
<sys/types.h> seguido por <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , _wstati64 , _wstat32i64 , , _wstat64i32 |
<sys/types.h> seguido por <sys/stat.h> ou <wchar.h> |
<errno.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Manipulação de arquivos
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
, , _fstat64i32
_getmbcp
_setmbcp