Share via


_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

Dapatkan informasi status pada file.

Sintaks

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
Penunjuk ke string yang berisi jalur file atau direktori yang ada.

buffer
Penunjuk ke struktur yang menyimpan hasil.

Nilai hasil

Masing-masing fungsi ini mengembalikan 0 jika informasi status file diperoleh. Nilai pengembalian -1 menunjukkan kesalahan, dalam hal errno ini diatur ke ENOENT, menunjukkan bahwa nama file atau jalur tidak dapat ditemukan. Nilai EINVAL pengembalian menunjukkan parameter yang tidak valid; errno juga diatur ke EINVAL dalam kasus ini.

Untuk informasi selengkapnya tentang kode pengembalian, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Stempel tanggal pada file dapat diwakili jika lebih lambat dari tengah malam, 1 Januari 1970, dan sebelum 23:59:59, 31 Desember 3000, UTC, kecuali Anda menggunakan _stat32 atau _wstat32, atau telah menentukan _USE_32BIT_TIME_T, dalam hal ini tanggal hanya dapat diwakili hingga 23:59:59 18 Januari 2038, UTC.

Keterangan

Fungsi ini _stat mendapatkan informasi tentang file atau direktori yang ditentukan oleh path dan menyimpannya dalam struktur yang ditujukkan oleh buffer. _stat secara otomatis menangani argumen string multibyte-character yang sesuai, mengenali urutan karakter multibyte sesuai dengan halaman kode multibyte yang saat ini digunakan.

_wstat adalah versi karakter luas dari _stat; path argumen ke _wstat adalah string karakter lebar. _wstat dan _stat bertingkah identik kecuali yang _wstat tidak menangani string multibyte-character.

Variasi fungsi ini mendukung jenis waktu 32-bit atau 64-bit, dan panjang file 32-bit atau 64-bit. Akhiran numerik pertama (32 atau 64) menunjukkan ukuran jenis waktu yang digunakan; akhiran kedua adalah i32 atau i64, yang menunjukkan apakah ukuran file diwakili sebagai bilangan bulat 32-bit atau 64-bit.

_stat setara _stat64i32dengan , dan struct _stat berisi waktu 64-bit, kecuali _USE_32BIT_TIME_T didefinisikan, dalam hal ini perilaku lama berlaku; _stat menggunakan waktu 32-bit, dan struct _stat berisi waktu 32-bit. Hal yang sama berlaku untuk _stati64.

Catatan

_wstat tidak bekerja dengan tautan simbolis Windows Vista. Dalam kasus ini, _wstat akan selalu melaporkan ukuran file 0. _stat bekerja dengan benar dengan tautan simbolis. Keluarga _statfungsi digunakan CreateFile di Visual Studio 2015, alih-alih FindFirstFile seperti di Visual Studio 2013 dan yang lebih lama. Ini berarti bahwa pada jalur yang _stat diakhir dengan garis miring berhasil jika jalur mengacu pada direktori, dibandingkan dengan sebelumnya ketika fungsi akan kesalahan dengan errno diatur ke ENOENT.

Fungsi ini memvalidasi parameternya. Jika salah satu path atau buffer adalah NULL, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Jenis waktu dan variasi jenis panjang file dari _stat

Fungsi _USE_32BIT_TIME_T Didefinisikan Jenis waktu Jenis panjang file
_stat, _wstat Tidak ditentukan 64-bit 32-bit
_stat, _wstat Didefinisikan 32-bit 32-bit
_stat32, _wstat32 Tidak terpengaruh oleh definisi makro 32-bit 32-bit
_stat64, _wstat64 Tidak terpengaruh oleh definisi makro 64-bit 64-bit
_stati64, _wstati64 Tidak ditentukan 64-bit 64-bit
_stati64, _wstati64 Didefinisikan 32-bit 64-bit
_stat32i64, _wstat32i64 Tidak terpengaruh oleh definisi makro 32-bit 64-bit
_stat64i32, _wstat64i32 Tidak terpengaruh oleh definisi makro 64-bit 32-bit

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tstat _stat _stat _wstat
_tstat64 _stat64 _stat64 _wstat64
_tstati64 _stati64 _stati64 _wstati64
_tstat32i64 _stat32i64 _stat32i64 _wstat32i64
_tstat64i32 _stat64i32 _stat64i32 _wstat64i32

Struktur _stat , yang didefinisikan dalam SYS\STAT.H, mencakup bidang berikut.

Bidang Deskripsi
st_gid Pengidentifikasi numerik grup yang memiliki file (khusus UNIX) Bidang ini akan selalu nol pada sistem Windows. File yang dialihkan diklasifikasikan sebagai file Windows.
st_atime Waktu akses file terakhir. Valid pada NTFS tetapi tidak pada drive disk berformat FAT.
st_ctime Waktu pembuatan file. Valid pada NTFS tetapi tidak pada drive disk berformat FAT.
st_dev Nomor drive disk yang berisi file (sama dengan st_rdev).
st_ino Jumlah simpul informasi ( inode) untuk file (khusus UNIX). Pada sistem file UNIX, inode menjelaskan stempel, izin, dan konten tanggal dan waktu file. Ketika file ditautkan secara permanen satu sama lain, file tersebut inodeberbagi . , inodedan oleh karena itu st_ino, tidak memiliki arti dalam sistem file FAT, HPFS, atau NTFS.
st_mode Masker bit untuk informasi mode file. Bit _S_IFDIR diatur jika path menentukan direktori; _S_IFREG bit diatur jika path menentukan file biasa atau perangkat. Bit baca/tulis pengguna diatur sesuai dengan mode izin file; bit eksekusi pengguna diatur sesuai dengan ekstensi nama file.
st_mtime Waktu modifikasi file terakhir.
st_nlink Selalu 1 pada sistem file non-NTFS.
st_rdev Nomor drive disk yang berisi file (sama dengan st_dev).
st_size Ukuran file dalam byte; bilangan bulat 64-bit untuk variasi dengan akhiran i64 .
st_uid Pengidentifikasi numerik pengguna yang memiliki file (khusus UNIX). Bidang ini akan selalu nol pada sistem Windows. File yang dialihkan diklasifikasikan sebagai file Windows.

Jika path mengacu pada perangkat, st_size, berbagai bidang waktu, st_dev, dan st_rdev bidang dalam _stat struktur tidak ada artinya. Karena STAT.H menggunakan _dev_t jenis yang ditentukan dalam TYPES.H, Anda harus menyertakan TYPES.H sebelumnya STAT.H dalam kode Anda.

Persyaratan

Rutin Header yang diperlukan Header opsional
_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32 <sys/types.h> diikuti oleh <sys/stat.h> <errno.h>
_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32 <sys/types.h> diikuti oleh <sys/stat.h> atau <wchar.h> <errno.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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

Baca juga

Penanganan file
_access, _waccess
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_getmbcp
_setmbcp