_stat
, _stat32
, , _stati64
_stat32i64
, _stat64i32
, _wstat
_wstat64
_wstat32
, , _wstat32i64
_wstati64
_stat64
_wstat64i32
Ottenere informazioni sullo stato di un file.
Sintassi
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
);
Parametri
path
Puntatore a una stringa contenente il percorso del file o directory esistente.
buffer
Puntatore alla struttura che archivia i risultati.
Valore restituito
Ognuna di queste funzioni restituisce 0 se si ottengono le informazioni sullo stato dei file. Il valore restituito -1 indica un errore, nel qual caso errno
è impostato su ENOENT
, a indicare che non è stato possibile trovare il nome file o il percorso. Un valore restituito pari a EINVAL
indica un parametro non valido; anche errno
è impostato su EINVAL
in questo caso.
Per altre informazioni sui codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Il timbro di data in un file può essere rappresentato se è successivo a mezzanotte, 1 gennaio 1970 e prima delle 23:59:59, 31 dicembre 3000, UTC, a meno che non si usi _stat32
o _wstat32
, o che sia definita _USE_32BIT_TIME_T
, nel qual caso la data può essere rappresentata solo fino alle 23.59.59.59 del 18 gennaio 2038, UTC.
Osservazioni:
La funzione _stat
ottiene informazioni sul file o sulla directory specificati da path
e le archivia nella struttura a cui punta buffer
. _stat
gestisce automaticamente gli argomenti stringa di caratteri multibyte in base alle esigenze, riconoscendo le sequenze di caratteri multibyte in base alla tabella codici multibyte attualmente in uso.
_wstat
è una versione a caratteri wide di _stat
; l'argomento path
in _wstat
è una stringa di caratteri wide. _wstat
e _stat
si comportano in modo identico, ad eccezione del fatto che _wstat
non gestisce stringhe di caratteri multibyte.
Le varianti di queste funzioni supportano tipi di tempo a 32 bit o a 64 bit e lunghezze di file a 32 bit o a 64 bit. Il primo suffisso numerico (32
o 64
) indica le dimensioni del tipo time usato; il secondo suffisso è i32
o i64
, che indica se le dimensioni del file sono rappresentate come intero a 32 bit o 64 bit.
_stat
equivale a e struct _stat
contiene un tempo a _stat64i32
64 bit, a meno che non _USE_32BIT_TIME_T
sia definito, nel qual caso il comportamento precedente è attivo; _stat
usa un'ora a 32 bit e struct _stat
contiene un tempo a 32 bit. Lo stesso vale per _stati64
.
Nota
_wstat
non funziona con i collegamenti simbolici di Windows Vista. In questi casi, _wstat
visualizzerà sempre un file di dimensioni pari a 0. _stat
funziona correttamente con i collegamenti simbolici.
La _stat
famiglia di funzioni usata CreateFile
in Visual Studio 2015, anziché FindFirstFile
in Visual Studio 2013 e versioni precedenti. Ciò significa che in un percorso che _stat
termina con una barra ha esito positivo se il percorso fa riferimento a una directory, anziché prima quando la funzione restituisce un errore con errno
impostato su ENOENT
.
Questa funzione convalida i relativi parametri. path
Se o buffer
è NULL
, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Variazioni del tipo di tempo e del tipo di lunghezza del file _stat
Funzioni | _USE_32BIT_TIME_T definito |
Tipo Time | Tipo lunghezza file |
---|---|---|---|
_stat , _wstat |
Non definito | 64 bit | 32 bit |
_stat , _wstat |
Definito | 32 bit | 32 bit |
_stat32 , _wstat32 |
Non interessato dalla definizione macro | 32 bit | 32 bit |
_stat64 , _wstat64 |
Non interessato dalla definizione macro | 64 bit | 64 bit |
_stati64 , _wstati64 |
Non definito | 64 bit | 64 bit |
_stati64 , _wstati64 |
Definito | 32 bit | 64 bit |
_stat32i64 , _wstat32i64 |
Non interessato dalla definizione macro | 32 bit | 64 bit |
_stat64i32 , _wstat64i32 |
Non interessato dalla definizione macro | 64 bit | 32 bit |
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tstat |
_stat |
_stat |
_wstat |
_tstat64 |
_stat64 |
_stat64 |
_wstat64 |
_tstati64 |
_stati64 |
_stati64 |
_wstati64 |
_tstat32i64 |
_stat32i64 |
_stat32i64 |
_wstat32i64 |
_tstat64i32 |
_stat64i32 |
_stat64i32 |
_wstat64i32 |
La _stat
struttura, definita in SYS\STAT.H
, include i campi seguenti.
Campo | Descrizione |
---|---|
st_gid |
Identificatore numerico del gruppo cui appartiene il file (specifico di UNIX). Questo campo sarà sempre zero nei sistemi Windows. Un file reindirizzato viene classificato come file di Windows. |
st_atime |
Ora dell'ultimo accesso del file. Valido su NTFS, ma non nelle unità disco formattate come FAT. |
st_ctime |
Ora di creazione del file. Valido su NTFS, ma non nelle unità disco formattate come FAT. |
st_dev |
Numero unità del disco contenente il file (uguale a st_rdev ). |
st_ino |
Numero del nodo informazioni (il inode ) per il file (specifico di UNIX). Nei file system UNIX, il inode descrive la data del file e i timbri data, le autorizzazioni e il contenuto. Quando il collegamento tra i file è reale, essi condividono lo stesso inode . Il inode , e quindi st_ino , non ha alcun significato nei file system FAT, HPFS o NTFS. |
st_mode |
Maschera di bit per informazioni sulla modalità di file. Viene impostato il bit _S_IFDIR se path specifica una directory; viene impostato il bit _S_IFREG se path specifica un file o un dispositivo normale. I bit di lettura/scrittura dell'utente sono impostati in base alla modalità di autorizzazione del file; i bit di esecuzione utente sono impostati secondo l'estensione. |
st_mtime |
Ora dell'ultima modifica del file. |
st_nlink |
Sempre 1 nel file system non NTFS. |
st_rdev |
Numero unità del disco contenente il file (uguale a st_dev ). |
st_size |
Dimensioni del file in byte; intero a 64 bit per le varianti con il i64 suffisso . |
st_uid |
Identificatore numerico dell'utente proprietario del file (specifico di UNIX). Questo campo sarà sempre zero nei sistemi Windows. Un file reindirizzato viene classificato come file di Windows. |
Se path
fa riferimento a un dispositivo, i campi st_size
, i vari campi ora, st_dev
e st_rdev
nella struttura _stat
non hanno alcun significato. Poiché STAT.H
usa il _dev_t
tipo definito in TYPES.H
, è necessario includere TYPES.H
prima STAT.H
nel codice.
Requisiti
Ciclo | Intestazione obbligatoria | Intestazioni facoltative |
---|---|---|
_stat , _stat32 , _stat64 , _stati64 , _stat32i64 _stat64i32 |
<sys/types.h> seguito da <sys/stat.h> |
<errno.h> |
_wstat , _wstat32 , _wstat64 , _wstati64 , _wstat32i64 _wstat64i32 |
<sys/types.h> seguito da <sys/stat.h> o <wchar.h> |
<errno.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Gestione dei file
_access
, _waccess
_fstat
, _fstat32
, _fstat64
, _fstati64
, _fstat32i64
_fstat64i32
_getmbcp
_setmbcp