当前位置:   article > 正文

C++ stat函数用法

c++ stat

stat结构体数据如下 

struct stat {
    dev_t st_dev; //device 文件的设备编号
    ino_t st_ino; //inode 文件的i-node
    mode_t st_mode; //protection 文件的类型和存取的权限
    nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.
    uid_t st_uid; //user ID of owner 文件所有者的用户识别码
    gid_t st_gid; //group ID of owner 文件所有者的组识别码
    dev_t st_rdev; //device type 若此文件为装置设备文件, 则为其设备编号
    off_t st_size; //total size, in bytes 文件大小, 以字节计算
    unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.
    u nsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.
    time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.
    time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、 utime 和write 时才会改变
    time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新
};

通过stat函数获取dir1, dir2, dir3个目录下的所有文件信息,以下是一个示例:

  1. void getFileInfo() {
  2.     vector<string> directories = { "/dir1", "/dir2", "/dir3"};
  3.     size_t totalSize = 0;//获取3个目录下所有子文件子目录的大小
  4.     for (const auto& dir : directories) {
  5. //打开目录
  6.         DIR* dir = opendir(dir.c_str());
  7.         if (dir != nullptr) {
  8.             struct dirent* entry;
  9. //read目录
  10.             while ((entry = readdir(dir)) != nullptr) {
  11.                 if (string(entry->d_name) != "." && string(entry->d_name) != "..") {
  12.                     string file_Path = dir + entry->d_name;
  13.                     struct stat statBuf;
  14.                     if (stat(file_Path.c_str(), &statBuf) == 0) {
  15.                         //size累加,用于获取目录下所有的文件大小
  16.                         totalSize += statBuf.st_size;
  17.                         //获取文件修改时间
  18.                         time_t filetime = statBuf.st_mtime;
  19.                         ALOGD("statBuf.st_size = %zu", totalSize);
  20.                     }
  21.                 }
  22.             }
  23.             closedir(dir);
  24.         }
  25.     }
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/523251
推荐阅读
相关标签
  

闽ICP备14008679号