获取文件的信息
作用:类似于liunx 中ls- lh命令
举例:获取文件创建的时间
获取文件的时间要是用struct stat 结构体
使用struct stat 结构体需要引入<sys/types.h><sys/stat.h>两个头文件
struct stat 结构体介绍:
struct stat {
mode_t st_mode; //文件对应的模式,文件,目录等
ino_t st_ino; //inode节点号
dev_t st_dev; //设备号码
dev_t st_rdev; //特殊设备号码
nlink_t st_nlink; //文件的连接数
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者对应的组
off_t st_size; //普通文件,对应的文件字节数
time_t st_atime; //文件最后被访问的时间
time_t st_mtime; //文件内容最后被修改的时间
time_t st_ctime; //文件状态改变时间
blksize_t st_blksize; //文件内容对应的块大小
blkcnt_t st_blocks; //伟建内容对应的块数量
};
使用stat可以获取 struct stat 结构体的地址
int stat(const char *path, struct stat *struct_stat); 成功返回0。
用法:
struct stat test;
stat(“文件路径”,&test);
配合时间操作中的 struct tm * sttm使用
sttm = localtime(&test.stctime);
struct tm
{
int tm_sec; 秒
int tm_min; 取值区间为[0,59]
int tm_hour; 时 - 取值区间为[0,23] */
int tm_mday; 一个月中的日期 - 取值区间为[1,31]
int tm_mon; 月份(从一月开始,0代表一月) - 取值区间为[0,11]
int tm_year; 年份,其值等于实际年份减去1900
int tm_wday; 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推
int tm_yday; 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推
int tm_isdst; 夏令时标识符,该字段意义不大,我们不用夏令时。
};
然后配合struct tm结构体中的参数就可以输出了
printf("%04u-%02u-%02u %02u:%02u:%02u\n",test->tm_year+1900,test->tm_mon+1,test->tm_mday,test->tm_hour,test->tm_min,test->tm_sec);