首页 > 代码库 > Linux获取文件信息

Linux获取文件信息

项目中需要对文件进行处理并分析,首先需要根据要求找到该文件,比如最后修改的文件

代码实现:

 1 #include <unistd.h> 2 #include <sys/stat.h> 3 #include <time.h> 4  5 #include <iostream> 6  7 using namespace std; 8  9 int main(int argc, char **argv)10 {11     struct stat STFile;12     stat("main.cpp", &STFile);13     14     cout << ctime(&STFile.st_mtime) << endl;15     cout << ctime(&STFile.st_atime) << endl;16 17     return 0;18 }

使用到的函数有:

stat,定义在sys/stat.h头文件中,用于根据文件名获取文件的信息

ctime定义在time.h头文件中,用于将时间time_t类型的时间转换为char*类型的时间

结构体有:struct stat

stat函数执行后,正确则返回0,否则返回-1,错误代码保存在errno中,如果执行成功,则将指定文件的信息填充到第二个参数指向的结构体中。

struct stat的定义如下:

 1 struct stat 2 { 3         mode_t     st_mode;       //文件对应的模式,文件,目录等 4         ino_t      st_ino;       //inode节点号 5         dev_t      st_dev;        //设备号码 6         dev_t      st_rdev;       //特殊设备号码 7         nlink_t    st_nlink;      //文件的连接数 8         uid_t      st_uid;        //文件所有者 9         gid_t      st_gid;        //文件所有者对应的组10         off_t      st_size;       //普通文件,对应的文件字节数11         time_t     st_atime;      //文件最后被访问的时间12         time_t     st_mtime;      //文件内容最后被修改的时间13         time_t     st_ctime;      //文件状态改变时间14         blksize_t st_blksize;    //文件内容对应的块大小15         blkcnt_t   st_blocks;     //伟建内容对应的块数量16 };

其中,我们使用到的成员变量为st_mtime。得到该该变量,即可根据变量的值来确定哪个文件时最后被修改的,从而得到最新的文件。

st_mtime是time_t类型,输出就是一串数字,如果想要直观的查看时间,可以用ctime函数对其进行转换后输出,转换前后输出对比:

1 转换前:14144821162 转换后:Tue Oct 28 15:43:46 2014

 

Linux获取文件信息