Sdílet prostřednictvím


_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _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 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 _statfunkcí 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 errnoENOENT.

Tato funkce ověří své parametry. Pokud je nebo bufferpath 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 Definovány 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 Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_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 (systém UNIX specifické) Toto pole bude vždy nula v systémech Windows. 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 (systém UNIX specifické). V systému souborů inode systém UNIX popisuje časové razítko, oprávnění a obsah souboru. 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 (systém UNIX specifické). 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.HSTAT.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