_stat
, _stat32
, , , _stat32i64
_wstat64
_stat64i32
_wstat32i64
_stati64
_wstat
_wstat32
_wstati64
_stat64
_wstat64i32
Získejte informace o stavu souboru.
Syntaxe
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
Ukazatel na řetězec obsahující cestu existujícího souboru nebo adresáře.
buffer
Ukazatel na strukturu, která ukládá výsledky.
Vrácená hodnota
Každá z těchto funkcí vrátí hodnotu 0, pokud jsou získány informace o stavu souboru. Návratová hodnota -1 označuje chybu, v takovém případě errno
je nastavena na ENOENT
hodnotu , která indikuje, že se název souboru nebo cesta nepodařilo najít. Návratová EINVAL
hodnota označuje neplatný parametr. errno
V tomto případě je také nastavená hodnota EINVAL
.
Další informace o návratových kódech naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Razítko data v souboru může být reprezentováno, pokud je pozdější než půlnoc, 1. ledna 1970 a před 23:59:59, 31. prosince 3000, UTC, pokud nepoužíváte _stat32
nebo _wstat32
, nebo jste definovali _USE_32BIT_TIME_T
, v takovém případě může být datum reprezentováno pouze do 23:59:59 18, 2038 UTC.
Poznámky
Funkce _stat
získá informace o souboru nebo adresáři určeném path
a uloží ho do struktury, na kterou buffer
odkazuje . _stat
automaticky zpracovává vícebajtové řetězcové argumenty podle potřeby a rozpoznává sekvence vícebajtových znaků podle aktuálně používané znakové stránky s vícebajty.
_wstat
je verze širokého znaku _stat
path
; argument je _wstat
řetězec širokého znaku. _wstat
a _stat
chovat se identicky s tím rozdílem, že _wstat
nezpracovává vícebajtové řetězce.
Varianty těchto funkcí podporují 32bitové nebo 64bitové časové typy a 32bitové nebo 64bitové délky souborů. První číselná přípona (32
nebo 64
) označuje velikost použitého časového typu; druhá přípona je buď i32
nebo i64
, označující, zda je velikost souboru reprezentována jako 32bitové nebo 64bitové celé číslo.
_stat
je ekvivalentní hodnotě _stat64i32
a struct _stat
obsahuje 64bitový čas, pokud _USE_32BIT_TIME_T
není definován, v takovém případě je staré chování účinné; _stat
používá 32bitový čas a struct _stat
obsahuje 32bitový čas. Totéž platí pro _stati64
.
Poznámka:
_wstat
nefunguje s symbolickými odkazy systému Windows Vista. V těchto případech _wstat
vždy nahlásí velikost souboru 0. _stat
funguje správně s symbolickými odkazy.
Řada _stat
funkcí se používá CreateFile
v sadě Visual Studio 2015 místo FindFirstFile
jako v sadě Visual Studio 2013 a starších verzích. To znamená, že _stat
na cestě končící lomítkem proběhne úspěšně, pokud cesta odkazuje na adresář, na rozdíl od dříve, kdy by funkce chybovala s nastaveným parametrem errno
ENOENT
.
Tato funkce ověří své parametry. Pokud je nebo buffer
path
je NULL
, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Varianty typu času a délky souboru _stat
Funkce | _USE_32BIT_TIME_T definovaný |
Typ času | Typ délky souboru |
---|---|---|---|
_stat , _wstat |
Nedefinováno | 64bitová | 32bitová |
_stat , _wstat |
Definované | 32bitová | 32bitová |
_stat32 , _wstat32 |
Není ovlivněn definicí makra. | 32bitová | 32bitová |
_stat64 , _wstat64 |
Není ovlivněn definicí makra. | 64bitová | 64bitová |
_stati64 , _wstati64 |
Nedefinováno | 64bitová | 64bitová |
_stati64 , _wstati64 |
Definované | 32bitová | 64bitová |
_stat32i64 , _wstat32i64 |
Není ovlivněn definicí makra. | 32bitová | 64bitová |
_stat64i32 , _wstat64i32 |
Není ovlivněn definicí makra. | 64bitová | 32bitová |
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Struktura _stat
definovaná v SYS\STAT.H
souboru obsahuje následující pole.
Pole | Popis |
---|---|
st_gid |
Číselný identifikátor skupiny, která vlastní soubor (specifický pro SYSTÉM UNIX) Toto pole bude vždy v systémech Windows nula. Přesměrovaný soubor se klasifikuje jako soubor Systému Windows. |
st_atime |
Čas posledního přístupu k souboru Platné pro NTFS, ale ne na diskových jednotkách formátovaných systémem SOUBORŮ FAT. |
st_ctime |
Čas vytvoření souboru Platné pro NTFS, ale ne na diskových jednotkách formátovaných systémem SOUBORŮ FAT. |
st_dev |
Číslo jednotky disku obsahujícího soubor (stejný jako st_rdev ). |
st_ino |
Počet informačních uzlů ( inode uzlu) pro soubor (specifický pro UNIX). V systémech inode souborů UNIX popisuje datum a časové razítko souboru, oprávnění a obsah. Pokud jsou soubory vzájemně pevně propojené, sdílejí stejné inode soubory . A inode proto st_ino nemá žádný význam v systémech souborů FAT, HPFS nebo NTFS. |
st_mode |
Bitová maska informací v režimu souboru. Bit se nastaví, pokud path určuje adresář. _S_IFREG Bit _S_IFDIR se nastaví, pokud path určuje běžný soubor nebo zařízení. Uživatelské bity pro čtení a zápis jsou nastaveny v souladu s režimem oprávnění souboru; uživatelské spouštění bitů jsou nastaveny podle přípony názvu souboru. |
st_mtime |
Čas poslední změny souboru. |
st_nlink |
Vždy 1 v systémech souborů jiných systémů než NTFS. |
st_rdev |
Číslo jednotky disku obsahujícího soubor (stejný jako st_dev ). |
st_size |
Velikost souboru v bajtech; 64bitové celé číslo pro varianty s příponou i64 . |
st_uid |
Číselný identifikátor uživatele, který vlastní soubor (specifický pro UNIX). Toto pole bude vždy v systémech Windows nula. Přesměrovaný soubor se klasifikuje jako soubor Systému Windows. |
Pokud path
odkazuje na zařízení, st_size
jsou různá časová pole st_dev
a st_rdev
pole ve struktuře bez významu _stat
. Vzhledem k tomu STAT.H
, že používá _dev_t
typ, který je definován v TYPES.H
, musíte do kódu zahrnout TYPES.H
STAT.H
.
Požadavky
Rutina | Požadovaný hlavičkový soubor | Volitelná záhlaví |
---|---|---|
_stat , _stat32 , _stat64 , _stati64 , , _stat32i64 _stat64i32 |
<sys/types.h> a pak <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , _wstati64 , , _wstat32i64 _wstat64i32 |
<sys/types.h> následované <sys/stat.h> nebo <wchar.h> |
<errno.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Zpracování souborů
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, _fstati64
, , _fstat32i64
_fstat64i32
_getmbcp
_setmbcp