Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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_errliste _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.
_statequivale a e struct _stat contiene un tempo a _stat64i3264 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_deve 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