_stat, _wstat funções
Obtenha informações de status sobre um arquivo.
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
);
Parâmetros
path
Ponteiro para uma seqüência de caracteres contendo o caminho do arquivo ou diretório existente.buffer
Ponteiro para a estrutura que armazena os resultados.
Valor de retorno
Cada uma dessas funções retorna 0 se as informações de status do arquivo são obtidas.Um valor de retorno de – 1 indica um erro, caso em que errno for definido como ENOENT, indicando que o caminho ou nome de arquivo não pôde ser encontrado.Um valor de retorno de EINVAL indica um parâmetro inválido; errnotambém é definida para EINVAL nesse caso.
Observação |
---|
Se path contém o local de um diretório, ele não pode conter uma barra invertida.Em caso afirmativo, -1 será retornado e errno será definido como ENOENT. |
Consulte _doserrno, errno, _sys_errlist e _sys_nerr para obter mais informações sobre este e outros, códigos de retorno.
O carimbo de data em um arquivo pode ser representado, se ele é posterior à meia-noite de 1º de janeiro de 1970 e antes de 23: 59: 59, 31 de dezembro de 3000, UTC, a menos que você use _stat32 ou _wstat32, ou tiver definido _USE_32BIT_TIME_T, caso em que a data pode ser representada somente até 03: 14: 07 em 19 de janeiro de 2038, UTC.
Comentários
O _stat função obtém informações sobre o arquivo ou diretório especificado por path e o armazena na estrutura apontada por buffer._statmanipula automaticamente os argumentos de seqüência de caracteres multibyte conforme apropriado, reconhecendo as seqüências de caracteres multibyte de acordo com para a página de código multibyte atualmente em uso.
_wstaté uma versão de caractere largo de _stat; o path argumento para _wstat é uma seqüência de caracteres largos._wstate _stat se comportam de forma idêntica, exceto que _wstat não processa as seqüências de caracteres de multibyte.
Variações dessas funções compatíveis com os tipos de tempo de 32 ou 64 bits e tamanhos de arquivo de 32 ou 64 bits.O primeiro sufixo numérico (32 ou 64) indica o tamanho do tipo tempo usado; o segundo sufixo é i32 ou i64, indicando se o tamanho do arquivo é representado como um inteiro de 32 bits ou 64 bits.
_staté equivalente a _stat64i32, e struct_stat contém a hora de 64 bits.Isso é verdadeiro, a menos que _USE_32BIT_TIME_T for definida, caso em que o comportamento antigo está em vigor; _statusa um tempo de 32 bits, e struct_stat contém a hora de 32 bits.O mesmo vale para _stati64.
Observação |
---|
_wstatnão funciona com Windows Vista links simbólicos.Nesses casos, _wstat sempre reportará um tamanho de arquivo de 0._statfunciona corretamente com os links simbólicos. |
Esta função valida seus parâmetros.Se qualquer um dos path ou buffer é NULL, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.
Tipo de tempo e variações de tipo de tamanho de arquivo de _stat
Funções |
_USE_32BIT_TIME_T definido? |
Tipo de tempo |
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 é afetada pela definição de macro |
32 bits |
32 bits |
_stat64, _wstat64 |
Não é afetada 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 é afetada pela definição de macro |
32 bits |
64 bits |
_stat64i32, _wstat64i32 |
Não é afetada pela definição de macro |
64 bits |
32 bits |
Mapeamentos de rotina de texto genérico
TCHAR.Rotina H |
_ Unicode & _ MBCS do arquivo não definido |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
O _stat estrutura, definida em SYS\STAT.H, inclui os seguintes campos.
st_gid
Identificador numérico do grupo que possui o arquivo (UNIX específico) neste campo será sempre zero nos sistemas Windows.Um arquivo redirecionado é classificado como um arquivo do Windows.st_atime
Hora do último acesso do arquivo.Válido em NTFS, mas não no FAT formatado drives de disco.st_ctime
Hora de criação do arquivo.Válido em NTFS, mas não no FAT formatado drives de disco.st_dev
Número do disco que contém o arquivo de unidade (mesmo que st_rdev).st_ino
Número do nó informações (o inode) para o arquivo (UNIX específico).Em sistemas de arquivos de UNIX, o inode descreve a data do arquivo e carimbos de hora, permissões e conteúdo.Quando arquivos são vinculados uns aos outros, eles compartilham o mesmo inode.O inodee, portanto, st_ino, não tem nenhum significado em 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 será definido se path Especifica um diretório. o _S_IFREG bit será 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; usuário executar bits 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 não-NTFS.st_rdev
Número do disco que contém o arquivo de unidade (mesmo que st_dev).st_size
Tamanho do arquivo em bytes. um inteiro de 64 bits para variações com o i64 sufixo**.**st_uid
Identificador numérico do usuário que possui o arquivo (UNIX específico).Este campo será sempre zero nos sistemas Windows.Um arquivo redirecionado é classificado como um arquivo do Windows.
Se path refere-se a um dispositivo, o st_size, vários campos de hora, st_dev, e st_rdev campos de _stat estrutura fazem sentido.Porque STAT.Usos de h a _dev_t digite, ou seja, tipos definidos no.H, você deve incluir os tipos.H antes STAT.H no seu código.
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalhos opcionais |
---|---|---|
_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> ou <wchar.h> |
<errno.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
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 );
}
}
Equivalência do .NET Framework
Consulte também
Referência
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32