Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 ENOENThodnotu , 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_errlista _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 bufferodkazuje . _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.
_wstatje verze širokého znaku _statpath ; 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ě _stat64i32a 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.Hsouboru 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ů ( inodeuzlu) 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é inodesoubory . A inodeproto st_inonemá žá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_sizejsou různá časová pole st_deva 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