_stat, _wstat功能

获取有关文件的状态信息。

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(str
   const char *path,
   struct _stat32i64 *buffer 
);
int _stat64i32(str
   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 
);

参数

  • path
    对包含现有文件或目录的路径字符串的指针。

  • buffer
    若要存储结果的结构的指针。

返回值

文件,则状态获得此人的信息,这些功能中的每种方法都返回 0。返回值 – 1 表示错误,因此,在 errno 设置为 ENOENT情况下,指示无法找到文件名或路径。EINVAL 的返回值指示一个无效参数; errno 在这种情况下还设置为 EINVAL 。

说明说明

如果 path 包含目录的位置,它不能包含一个尾部斜杠。如果它, -1 将返回,并且 errno 将设置为 ENOENT。

请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr 有关这方面的更多信息以及其他,返回代码。

在文件的日期标记可在 23:59 之前表示,如果它比午夜, 1970 年一月 1 日之后,和: 59,十二月 31 日, 3000, UTC,,除非使用 _stat32 或 _wstat32,或者定义 _USE_32BIT_TIME_T,,该日期只能表示直到 03:14 情况下: 一月 07 日 19 日 2038 中, UTC。

备注

_stat 功能在结构获取有关 path 或目录的信息指定的文件并将其存储指向由 buffer。自动_stat 处理多字节字符串参数根据需要,识别多字节字符顺序基于当前正在使用多字节代码的页。

_wstat 是 _stat的宽字符版本;为 _wstat 的 path 参数是宽字符字符串。_wstat 和 _stat 具有相同的行为,但 _wstat 不处理多字节字符字符串。

这些功能的变体支持 32 位或 64 位时间类型以及 32 位或 64 位文件长度。第一个数字后缀 (32 或 64) 指示所用的时间类型的大小;第二后缀是 i32 或 i64,指示文件大小是否表示为 32 位或 64 位整数。

_stat 与 _stat64i32是等效的,因此, struct_stat 包含一个 64 位时间。为 true,除非 _USE_32BIT_TIME_T 定义,因此,在旧行为实际情况下为; _stat 使用 32 位时间,因此, struct_stat 包含 32 位时间。上述情况同样适用于 _stati64。

说明说明

_wstat 不与 Windows Vista 符号字符串一起使用。在这些情况下, _wstat 始终报告文件大小为 0。_stat 正确使用符号字符串一起使用。

此功能验证其参数。如果 path 或 buffer 是 NULL,无效参数调用处理程序,如 参数验证所述。

超时 _stat 的类型和长度文件类型变体

函数

定义的 _USE_32BIT_TIME_T?

时间类型

文件长度类型

_stat, _wstat

未定义

64 位

32 位

_stat, _wstat

已定义

32 位

32 位

_stat32, _wstat32

不影响由宏定义

32 位

32 位

_stat64, _wstat64

不影响由宏定义

64 位

64 位

_stati64, _wstati64

未定义

64 位

64 位

_stati64, _wstati64

已定义

32 位

64 位

_stat32i64, _wstat32i64

不影响由宏定义

32 位

64 位

_stat64i32, _wstat64i32

不影响由宏定义

64 位

32 位

一般文本例程映射

TCHAR.H 实例

未定义的 _UNICODE _MBCS

定义的 _MBCS

定义的 _UNICODE

_tstat

_stat

_stat

_wstat

_tstat64

_stat64

_stat64

_wstat64

_tstati64

_stati64

_stati64

_wstati64

_tstat32i64

_stat32i64

_stat32i64

_wstat32i64

_tstat64i32

_stat64i32

_stat64i32

_wstat64i32

_stat 结构,定义在 SYS \STAT.H,包括以下字段。

  • st_gid
    拥有文件组的数字标识符 (UNIX 特定的) 此字段始终在 windows 系统的零。已重定向的文件分类为 windows 文件。

  • st_atime
    文件访问权限之前的时间。有效在 NTFS,但不在 FAT 格式化磁盘驱动器。

  • st_ctime
    文件的创建时间。有效在 NTFS,但不在 FAT 格式化磁盘驱动器。

  • st_dev
    包含文件 (磁盘的提升数字和 st_rdev相同)。

  • st_ino
    信息节点 ( inode) 的数字文件 (UNIX 特定的)。在 UNIX 文件系统, inode 描述文件日期和时间戳、权限和内容。当文件相互时难以链接,它们共享相同的 inode。inode并 st_ino,没有意义在 FAT、 HPFS 或 NTFS 文件系统。

  • st_mode
    位掩码对于文件架构信息。,如果 path 指定目录, _S_IFDIR 位设置;,如果 path 指定一个普通文件或计算机, _S_IFREG 位设置。用户读/写位基于文件的权限模式设置为;用户执行位根据文件扩展名设置。

  • st_mtime
    文件的最后修改的时间。

  • st_nlink
    始终 1 在非 NTFS 文件系统。

  • st_rdev
    包含文件 (磁盘的提升数字和 st_dev相同)。

  • st_size
    文件的大小 (以字节为单位);变体的 64 位整数与 i64 后缀**.**

  • st_uid
    拥有文件用户的数字标识符 (UNIX 特定的)。此字段始终在 windows 系统的零。已重定向的文件分类为 windows 文件。

如果 path 引用计算机, st_size,各个字段时, st_dev,因此,在 _stat 结构的 st_rdev 字段是无意义的。由于 STAT.H 使用在 TYPES.H 定义的 _dev_t 类型,则必须在 STAT.H 的前面包括 TYPES.H 在代码。

要求

实例

必需的头

可选标头

_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32

sys/types.h 后跟 sys/stat.h

errno.h

_wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32

sys/types.h 后跟或 sys/stat.h wchar.h

errno.h

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

// 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 );
   }
}
  

.NET Framework 等效项

请参见

参考

文件处理

_access, _waccess

_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32

_getmbcp

_setmbcp