zoukankan      html  css  js  c++  java
  • stat()函数--------------获取文件信息

    stat():用于获取文件的状态信息,使用时需要包含<sys/stat.h>头文件。

    函数原型:int stat(const char *path, struct stat *buf);

    struct stat {
      dev_t st_dev;              /* ID of device containing file */
      ino_t st_ino;           /* inode number */
      mode_t st_mode;       /* protection */
      nlink_t st_nlink;       /* number of hard links */
      uid_t st_uid;         /* user ID of owner */
      gid_t st_gid;              /* group ID of owner */
      dev_t st_rdev;        /* device ID (if special file) */
      off_t st_size;          /* total size, in bytes */
      blksize_t st_blksize;   /* blocksize for file system I/O */
      blkcnt_t st_blocks;     /* number of 512B blocks allocated */
      time_t st_atime;      /* time of last access */
      time_t st_mtime;     /* time of last modification */
      time_t st_ctime;      /* time of last status change */
    };

    示例:

    int main(int argc, char* argv[])
    {
        struct stat buf;
        char* path = "E:\1.txt";
    
        int res = stat(path, &buf);
        if (res != 0)
        {
            perror("Problem getting information");
            switch (errno)
            {
            case ENOENT:
                printf("File %s not found.
    ", path);
                break;
            case EINVAL:
                printf("Invalid parameter to _stat.
    ");
                break;
            default:
                /* Should never be reached. */
                printf("Unexpected error in _stat.
    ");
            }
        }
    
        //获取文件类型
        if (buf.st_mode & S_IFREG)
            printf("regular file
    ");
        else if (buf.st_mode & S_IFDIR)
            printf("dir 
    ");
        else
            printf("other
    ");
    
        //获取大小
        printf("SIZE %d
    ", buf.st_size);
    
    
        char timeBuf[26] = { 0 };
        printf("%lld
    ", buf.st_ctime);
        //文件最后访问时间
        errno_t err = ctime_s(timeBuf, 26,&buf.st_atime);
        if (err)
        {
            printf("Invalid arguments to ctime_s.");
            return -1;
        }
        printf("Time visit %s
    ", timeBuf);
    
        //文件最后修改时间
        err = ctime_s(timeBuf, 26, &buf.st_mtime);
        if(err)
        {
            printf("Invalid arguments to ctime_s.");
            return -1;
        }
        printf("Time modified %s
    ", timeBuf);
        
        system("pause");
        return 0;
    }

    示例及参考来源:https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/stat-functions

  • 相关阅读:
    学习进度16
    个人总结
    人月神话阅读笔记09
    人月神话阅读笔记08
    人月神话阅读笔记07
    构建之法阅读笔记06
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之阅读笔记03
    Python安装 pip 和 easy_install
  • 原文地址:https://www.cnblogs.com/lianshuiwuyi/p/7498877.html
Copyright © 2011-2022 走看看