_stat
, _stat32
, , , _stat32i64
_wstat64
_stat64i32
_wstat32i64
_stati64
_wstat
_wstat32
_wstati64
_stat64
_wstat64i32
Uzyskaj informacje o stanie pliku.
Składnia
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
);
Parametry
path
Wskaźnik do ciągu zawierającego ścieżkę istniejącego pliku lub katalogu.
buffer
Wskaźnik do struktury, która przechowuje wyniki.
Wartość zwracana
Każda z tych funkcji zwraca wartość 0, jeśli są uzyskiwane informacje o stanie pliku. Wartość zwracana -1 wskazuje błąd, w którym przypadku errno
ustawiono ENOENT
wartość , wskazując, że nie można odnaleźć nazwy pliku lub ścieżki. Wartość zwracana EINVAL
wskazuje nieprawidłowy parametr; errno
jest również ustawiona na EINVAL
wartość w tym przypadku.
Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Sygnatura daty w pliku może być reprezentowana, jeśli jest późniejsza niż północ, 1 stycznia 1970 r. i przed 23:59:59, 31 grudnia 3000 r., UTC, chyba że używasz _stat32
lub _wstat32
zdefiniowano _USE_32BIT_TIME_T
, w którym przypadku data może być reprezentowana tylko do 23:59:59 stycznia 18, 2038, UTC.
Uwagi
Funkcja _stat
uzyskuje informacje o pliku lub katalogu określonym przez path
program i przechowuje je w strukturze wskazywane przez buffer
element . _stat
Automatycznie obsługuje argumenty ciągów wielobajtowych znaków zgodnie z potrzebami, rozpoznając sekwencje wielobajtowe znaków zgodnie ze stroną kodową wielobajtową, która jest obecnie używana.
_wstat
jest wersją szerokoznakową ; _stat
argument to path
_wstat
ciąg o szerokim znaku. _wstat
i _stat
zachowują się identycznie, z tą różnicą, że _wstat
nie obsługuje ciągów wielobajtowych znaków.
Odmiany tych funkcji obsługują typy czasu 32-bitowego lub 64-bitowego oraz 32-bitowe lub 64-bitowe długości plików. Pierwszy sufiks liczbowy (32
lub 64
) wskazuje rozmiar używanego typu czasu; drugi sufiks to i32
lub i64
, wskazując, czy rozmiar pliku jest reprezentowany jako 32-bitowa lub 64-bitowa liczba całkowita.
_stat
jest odpowiednikiem _stat64i32
parametru i struct _stat
zawiera 64-bitowy czas, chyba że _USE_32BIT_TIME_T
jest zdefiniowany, w którym przypadku stare zachowanie jest stosowane; _stat
używa czasu 32-bitowego i struct _stat
zawiera 32-bitowy czas. To samo dotyczy ._stati64
Uwaga
_wstat
nie działa z linkami symbolicznymi systemu Windows Vista. W takich przypadkach _wstat
zawsze raportuje rozmiar pliku 0. _stat
działa poprawnie z linkami symbolicznymi.
Rodzina _stat
funkcji jest używana CreateFile
w programie Visual Studio 2015 zamiast FindFirstFile
w programie Visual Studio 2013 i starszych wersjach. Oznacza to, że _stat
na ścieżce kończącej się ukośnikiem kończy się powodzeniem, jeśli ścieżka odwołuje się do katalogu, w przeciwieństwie do wcześniejszego wystąpienia błędu funkcji z ustawioną wartością errno
ENOENT
.
Ta funkcja weryfikuje jego parametry. Jeśli element path
lub buffer
ma NULL
wartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Odmiany typu czasu i typu długości pliku _stat
Funkcje | _USE_32BIT_TIME_T zdefiniowany |
Typ godziny | Typ długości pliku |
---|---|---|---|
_stat , _wstat |
Nie zdefiniowano | 64-bitowa | 32-bitowa |
_stat , _wstat |
Zdefiniowane | 32-bitowa | 32-bitowa |
_stat32 , _wstat32 |
Nie ma to wpływu na definicję makra | 32-bitowa | 32-bitowa |
_stat64 , _wstat64 |
Nie ma to wpływu na definicję makra | 64-bitowa | 64-bitowa |
_stati64 , _wstati64 |
Nie zdefiniowano | 64-bitowa | 64-bitowa |
_stati64 , _wstati64 |
Zdefiniowane | 32-bitowa | 64-bitowa |
_stat32i64 , _wstat32i64 |
Nie ma to wpływu na definicję makra | 32-bitowa | 64-bitowa |
_stat64i32 , _wstat64i32 |
Nie ma to wpływu na definicję makra | 64-bitowa | 32-bitowa |
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Struktura zdefiniowana _stat
w pliku SYS\STAT.H
zawiera następujące pola.
Pole | opis |
---|---|
st_gid |
Numeryczny identyfikator grupy, która jest właścicielem pliku (specyficzne dla systemu UNIX) To pole zawsze będzie zero w systemach Windows. Przekierowany plik jest klasyfikowany jako plik systemu Windows. |
st_atime |
Czas ostatniego dostępu do pliku. Prawidłowy w systemie plików NTFS, ale nie na dyskach sformatowanych w formacie FAT. |
st_ctime |
Czas tworzenia pliku. Prawidłowy w systemie plików NTFS, ale nie na dyskach sformatowanych w formacie FAT. |
st_dev |
Numer dysku zawierającego plik (taki sam jak st_rdev ). |
st_ino |
Liczba węzła informacji () inode dla pliku (specyficznego dla systemu UNIX). W systemach inode plików UNIX opisano datę i godzinę pliku, uprawnienia i zawartość. Gdy pliki są połączone ze sobą nawzajem, współużytkują te same inode pliki . System inode , i dlatego st_ino nie ma znaczenia w systemach plików FAT, HPFS lub NTFS. |
st_mode |
Maska bitowa dla informacji o trybie plików. Bit _S_IFDIR jest ustawiany, jeśli path określa katalog; _S_IFREG bit jest ustawiony, jeśli path określa zwykły plik lub urządzenie. Bity odczytu/zapisu użytkownika są ustawiane zgodnie z trybem uprawnień pliku; Bity wykonywania użytkownika są ustawiane zgodnie z rozszerzeniem nazwy pliku. |
st_mtime |
Czas ostatniej modyfikacji pliku. |
st_nlink |
Zawsze 1 w systemach plików innych niż NTFS. |
st_rdev |
Numer dysku zawierającego plik (taki sam jak st_dev ). |
st_size |
Rozmiar pliku w bajtach; 64-bitowa liczba całkowita dla odmian z sufiksem i64 . |
st_uid |
Numeryczny identyfikator użytkownika, który jest właścicielem pliku (specyficzny dla systemu UNIX). To pole zawsze będzie zero w systemach Windows. Przekierowany plik jest klasyfikowany jako plik systemu Windows. |
Jeśli path
odwołuje się do urządzenia, st_size
pola , różne pola czasu, st_dev
i st_rdev
w _stat
strukturze są bez znaczenia. Ponieważ STAT.H
używa typu zdefiniowanego _dev_t
w TYPES.H
pliku , należy uwzględnić TYPES.H
go wcześniej STAT.H
w kodzie.
Wymagania
Procedura | Wymagany nagłówek | Opcjonalne nagłówki |
---|---|---|
_stat , , _stat32 , _stat64 , _stati64 , , _stat32i64 _stat64i32 |
<sys/types.h> , a następnie <sys/stat.h> |
<errno.h> |
_wstat , , _wstat32 , _wstat64 , _wstati64 , , _wstat32i64 _wstat64i32 |
<sys/types.h> <sys/stat.h> a następnie lub<wchar.h> |
<errno.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Obsługa plików
_access
, _waccess
_fstat
, , _fstat32
, _fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
_getmbcp
_setmbcp