zoukankan      html  css  js  c++  java
  • struct stat

    stat函数用来获取指定路径的文件或者文件夹的信息。
    
    //! 需要包含的头文件  
    #include <sys/types.h>    
    #include <sys/stat.h>   
    //函数原型 int stat(   const char *filename, //文件或者文件夹的路径    struct stat *buf //获取的信息保存在内存中 ); 正确——返回0 错误——返回-1,具体错误码保存在errno中
    errno 是记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义。查看错误代码errno
    是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)
    赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决
    了不少原本看来莫名其妙的问题。
    //stat结构体是文件(夹)信息的结构体,定义如下:
    struct
    stat { dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/ ino_t st_ino; /* inode number -inode节点号*/ mode_t st_mode; /* protection -保护模式?*/ nlink_t st_nlink; /* number of hard links -链向此文件的连接数(硬连接)*/ uid_t st_uid; /* user ID of owner -user id*/ gid_t st_gid; /* group ID of owner - group id*/ dev_t st_rdev; /* device ID (if special file) -设备号,针对设备文件*/ off_t st_size; /* total size, in bytes -文件大小,字节为单位*/ blksize_t st_blksize; /* blocksize for filesystem I/O -系统块的大小*/ blkcnt_t st_blocks; /* number of 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 - */ };
    //例子:使用stat结构图获得文件信息
    #include <iostream>  
    #include <ctime>   
    #include <sys/types.h>    
    #include <sys/stat.h>
    #include <stdio.h>     
    using namespace std;     
    int  main ()  
    {  
        struct stat buf;    
        int result;    
        result = stat ("./download.c", &buf);    
        if (result != 0)  
          {  
              perror ("Failed ^_^");  
               //cout<<"Failed ^_^";
          }  
        else  
          {    
              //! 文件的大小,字节为单位    
              cout << "size of the file in bytes: " << buf.st_size << endl;    
              //! 文件创建的时间    
              cout << "time of creation of the file: " << ctime (&buf.st_ctime) << endl;   
              //! 最近一次修改的时间    
              cout << "time of last modification of the file: " << ctime (&buf.st_mtime) << endl;    
              //! 最近一次访问的时间    
              cout << "time of last access of the file: " << ctime (&buf.st_atime)<< endl;  
          }    
        return 0;    
    lzb@lzb:~/projects/curls/http_post/lib$ ./a.out
    size of the file in bytes: 874
    time of creation of the file: Tue Jun 18 13:33:05 2019
    
    time of last modification of the file: Tue Jun 18 13:33:05 2019
    
    time of last access of the file: Tue Jun 18 13:33:05 2019

     上述代码中

    C 库函数 perror 把一个描述性错误消息输出到标准错误 stderr。首先输出字符串 str,后跟一个冒号,然后是一个空格。

    //函数原型
    void
    perror(const char *str);//str -- 这是 C 字符串,包含了一个自定义消息,将显示在原本的错误消息之前。
    #include <stdio.h>
    
    int main ()
    {
       FILE *fp;
    
       /* 首先重命名文件 */
       rename("file.txt", "newfile.txt");
    
       /* 现在让我们尝试打开相同的文件 */
       fp = fopen("file.txt", "r");
       if( fp == NULL ) {
          perror("Error ");
          return(-1);
       }
       fclose(fp);
          
       return(0);
    }

    让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开一个不存在的文件:

    Error : No such file or directory
     
  • 相关阅读:
    用SQL SERVER取分组数据第一条:查出每个班级的成绩第一名
    [转]spring beans.xml
    [转]为什么要使用框架
    MySQL 5.6 for Windows 解压缩版配置安装
    [转]hql 语法与详细解释
    [转]slf4j + log4j原理实现及源码分析
    [转]最详细的Log4j使用教程
    yii2 checkbox 的使用实例
    Magento Order 状态详解
    yii2 设置多个入口文件
  • 原文地址:https://www.cnblogs.com/liuzhenbo/p/11044746.html
Copyright © 2011-2022 走看看