函数 stat() 详解
int _stat( const char *path, struct _stat *buffer );
結構體 _stat 的定义在 sys\stat.h 裏面,具體內容可自行查看,包括主要的字段為:
- st_gid
-
Numeric identifier of group that owns the file (UNIX-specific) This field will always be zero on Windows systems. A redirected file is classified as a Windows file.
- st_atime
-
Time of last access of file. Valid on NTFS but not on FAT formatted disk drives.
- st_ctime
-
Time of creation of file. Valid on NTFS but not on FAT formatted disk drives.
- st_dev
-
Drive number of the disk containing the file (same as st_rdev).
- st_ino
-
Number of the information node (the inode) for the file (UNIX-specific). On UNIX file systems, the inode describes the file date and time stamps, permissions, and content. When files are hard-linked to one another, they share the same inode. The inode, and therefore st_ino, has no meaning in the FAT, HPFS, or NTFS file systems.
- st_mode
-
Bit mask for file-mode information. The _S_IFDIR bit is set if path specifies a directory; the _S_IFREG bit is set if path specifies an ordinary file or a device. User read/write bits are set according to the file's permission mode; user execute bits are set according to the filename extension.
- st_mtime
-
Time of last modification of file.
- st_nlink
-
Always 1 on non-NTFS file systems.
- st_rdev
-
Drive number of the disk containing the file (same as st_dev).
- st_size
-
Size of the file in bytes; a 64-bit integer for variations with the i64 suffix.
- st_uid
-
Numeric identifier of user who owns file (UNIX-specific). This field will always be zero on Windows systems. A redirected file is classified as a Windows file.
If path refers to a device, the st_size, various time fields, st_dev, and st_rdev fields in the _stat structure are meaningless. Because STAT.H uses the _dev_t type that is defined in TYPES.H, you must include TYPES.H before STAT.H in your code.
下面通過一個demo實例來描述下函數的使用。
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- int main(int argc,char *argv[])
- {
- struct _stat buf;
- int result = 0;
- char *filename="D:\\test.txt";//注意分隔符转换
- result = _stat(filename,&buf);
- if(result == 0){
- printf("\nFile Infomation\n");
- printf("file size = [%d]\n",buf.st_size);
- printf("file dev=[%c]\n",buf.st_rdev+'A');//注意加上大A
- return 0;
- }
- return -1;
- }