Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Abrufen von Statusinformationen zu einer Datei.
Syntax
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
);
Parameter
path
Ein Zeiger auf eine Zeichenfolge, die den Pfad einer vorhandenen Datei oder eines vorhandenen Verzeichnisses enthält.
buffer
Ein Zeiger auf die Struktur, in der die Ergebnisse gespeichert werden.
Rückgabewert
Jede dieser Funktionen gibt „0“ zurück, wenn die Dateistatusinformationen abgerufen werden. Ein Rückgabewert von -1 gibt einen Fehler an, in diesem Fall errno auf ENOENT", der angibt, dass der Dateiname oder der Pfad nicht gefunden werden konnte. Der Rückgabewert EINVAL zeigt einen ungültigen Parameter an; errno wird in diesem Fall ebenfalls auf EINVAL festgelegt.
Weitere Informationen zu Rückgabecodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno
Der Datumsstempel einer Datei kann dargestellt werden, wenn er später als Mitternacht, 1. Januar 1970 und vor 23:59:59, 31. Dezember 3000, UTC dargestellt wird, es sei denn, Sie verwenden _stat32 oder _wstat32oder definiert _USE_32BIT_TIME_Thaben, in diesem Fall kann das Datum nur bis 23:59:59:59 Januar 18, 2038, UTC dargestellt werden.
Hinweise
Die _stat -Funktion ruft Informationen zur durch path angegebenen Datei bzw. dem angegebenen Verzeichnis ab und speichert sie in der Struktur, auf die bufferverweist. _stat behandelt Multibyte-Zeichenfolgenargumente automatisch richtig. Die Erkennung von Multibyte-Zeichenfolgen erfolgt auf der Grundlage der aktuell verwendeten Multibyte-Codeseite.
_wstat ist eine Breitzeichenversion von _stat. Das path -Argument für _wstat ist eine Breitzeichenfolge. _wstat und _stat verhalten sich identisch, mit der Ausnahme, dass _wstat multibyte-Zeichenfolgen nicht behandelt werden.
Variationen dieser Funktionen unterstützen 32-Bit- oder 64-Bit-Zeittypen und 32-Bit- oder 64-Bit-Dateilängen. Das erste numerische Suffix (32 oder 64) gibt die Größe des verwendeten Zeittyps an; das zweite Suffix ist entweder i32 oder i64und gibt an, ob die Dateigröße als ganze Zahl mit 32 Bit oder 64 Bit dargestellt ist.
_stat_stat64i32entspricht , und struct _stat enthält eine 64-Bit-Zeit, es sei denn_USE_32BIT_TIME_T, es wird definiert, in diesem Fall ist das alte Verhalten in Kraft; _stat verwendet eine 32-Bit-Zeit und struct _stat enthält eine 32-Bit-Zeit. Gleiches gilt auch für _stati64.
Hinweis
_wstat funktioniert nicht mit symbolischen Windows Vista-Verknüpfungen. In diesen Fällen meldet _wstat immer die Dateigröße „0“. _stat funktioniert mit symbolischen Verknüpfungen nicht ordnungsgemäß.
Die _stat-Funktionsreihe verwendet in Visual Studio 2015 CreateFile, statt FindFirstFile wie in Visual Studio 2013 und früher. Das bedeutet, dass _stat bei einem Pfad, der mit einem Schrägstrich endet, erfolgreich ist, wenn der Pfad auf ein Verzeichnis verweist, im Gegensatz zu vorher, als die Funktion bei einem errno-Wert von ENOENT fehlschlug.
Diese Funktion überprüft ihre Parameter. Wenn eine oder buffer mehrere path Parameter vorhanden sindNULL, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Varianten ds Uhrzeittyps und Dateilängentyps von _stat
| Funktionen | _USE_32BIT_TIME_T definiert |
Uhrzeittyp | Dateilängentyp |
|---|---|---|---|
_stat, _wstat |
Nicht definiert | 64-Bit | 32-Bit |
_stat, _wstat |
Definiert | 32 Bit | 32 Bit |
_stat32, _wstat32 |
Nicht von der Makrodefinition betroffen | 32 Bit | 32 Bit |
_stat64, _wstat64 |
Nicht von der Makrodefinition betroffen | 64 Bit | 64 Bit |
_stati64, _wstati64 |
Nicht definiert | 64 Bit | 64 Bit |
_stati64, _wstati64 |
Definiert | 32-Bit | 64-Bit |
_stat32i64, _wstat32i64 |
Nicht von der Makrodefinition betroffen | 32-Bit | 64-Bit |
_stat64i32, _wstat64i32 |
Nicht von der Makrodefinition betroffen | 64-Bit | 32-Bit |
Mapping generischer Textroutinen
TCHAR.H-Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
|---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
Die _stat in SYS\STAT.Hder Tabelle definierte Struktur enthält die folgenden Felder.
| Feld | Beschreibung |
|---|---|
st_gid |
Numerischer Bezeichner der Gruppe, die die Datei besitzt (UNIX-spezifisch). Dieses Feld weist auf Windows-Systemen immer den Wert „0“ (null) auf. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
st_atime |
Zeitpunkt des letzten Zugriffs auf die Datei. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_ctime |
Uhrzeit der Dateierstellung. Gültig auf NTFS-, aber nicht auf FAT-formatierten Laufwerken. |
st_dev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_rdev). |
st_ino |
Anzahl der Informationsknoten (der inodes) für die Datei (UNIX-spezifisch). Bei UNIX-Dateisystemen beschreibt der inode die Dateistempel für Datum und Uhrzeit, die Berechtigungen und den Inhalt. Wenn Dateien durch einen festen Link miteinander verknüpft sind, besitzen sie den gleichen inode. Der inodeund daher auch st_inoist bei den Dateisystemen FAT, HPFS oder NTFS ohne Bedeutung. |
st_mode |
Bitmaske für Dateimodusinformationen. Das _S_IFDIR -Bit ist festgelegt, wenn path ein Verzeichnis angibt; das _S_IFREG -Bit ist festgelegt, wenn path eine gewöhnliche Datei oder ein Gerät angibt. Lese-/Schreibbits für Benutzer werden entsprechend dem Berechtigungsmodus der Datei festgelegt; Ausführungsbits für Benutzer werden entsprechend der Dateierweiterung festgelegt. |
st_mtime |
Uhrzeit der letzten Änderung der Datei. |
st_nlink |
Bei Nicht-NTFS-Dateisystemen immer „1“. |
st_rdev |
Laufwerksnummer des Datenträgers, der die Datei enthält (gleichbedeutend mit st_dev). |
st_size |
Größe der Datei in Byte; eine 64-Bit-Ganzzahl für Variationen mit dem i64 Suffix. |
st_uid |
Numerischer Bezeichner des Benutzers, der die Datei besitzt (UNIX-spezifisch). Dieses Feld hat bei Windows-Systemen immer den Wert „0“. Eine umgeleitete Datei wird als Windows-Datei klassifiziert. |
Wenn path auf ein Gerät verweist, haben die Felder st_size, die verschiedenen Zeitfelder, st_devund st_rdev in der _stat -Struktur keine Bedeutung. Da STAT.H der typ verwendet wird, der _dev_t in TYPES.Hdefiniert ist, müssen Sie vor dem STAT.H Code einschließenTYPES.H.
Anforderungen
| Routine | Erforderlicher Header | Optionale Header |
|---|---|---|
_stat, , _stat32_stat64, _stati64, , _stat32i64_stat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> |
<errno.h> |
_wstat, , _wstat32_wstat64, _wstati64, , _wstat32i64_wstat64i32 |
<sys/types.h> gefolgt von <sys/stat.h> oder <wchar.h> |
<errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Dateibehandlung
_access, _waccess
_fstat, , _fstat32_fstat64, _fstati64, , _fstat32i64_fstat64i32
_getmbcp
_setmbcp