c/c++ 得到一个文件或目录的信息

来源:互联网 发布:人工智能的发展前景 编辑:程序博客网 时间:2024/06/06 00:19
#include <time.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <errno.h> int main( void ){   struct _stat buf;   int result;   char timebuf[26];   char* filename = "C:\\WINDOWS";   errno_t err;    // Get data associated with "crt_stat.c":    result = _stat( filename, &buf );    // Check if statistics are valid:    if( result != 0 )   {      perror( "Problem getting information" );      switch (errno)      {         case ENOENT:           printf("File %s not found.\n", filename);           break;         case EINVAL:           printf("Invalid parameter to _stat.\n");           break;         default:           /* Should never be reached. */           printf("Unexpected error in _stat.\n");      }   }   else   {             if(buf.st_mode&_S_IFDIR) printf( "File specifies a directory\n");      else printf( "File not a directory\n");             // Output some of the statistics:       printf( "File size     : %ld\n", buf.st_size );      printf( "Drive         : %c:\n", buf.st_dev + 'A' );      err = ctime_s(timebuf, 26, &buf.st_mtime);      if (err)      {         printf("Invalid arguments to ctime_s.");         exit(1);      }      printf( "Time modified : %s", timebuf );   }}

int _stat(const char *restrict pathname, struct stat *restrict buf); //通过文件名字,获取文件对应属性。int _fstat(int filedes, struct stat *buf); //通过文件描述符获取文件对应的属性。int _lstat(const char *restrict pathname, struct stat *restrict buf); //通过连接文件描述命,获取文件属性。 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;     //伟建内容对应的块数量      };