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.\n", path);
            break;
        case EINVAL:
            printf("Invalid parameter to _stat.\n");
            break;
        default:
            /* Should never be reached. */
            printf("Unexpected error in _stat.\n");
        }
    }

    //获取文件类型
    if (buf.st_mode & S_IFREG)
        printf("regular file\n");
    else if (buf.st_mode & S_IFDIR)
        printf("dir \n");
    else
        printf("other\n");

    //获取大小
    printf("SIZE %d\n", buf.st_size);

    char timeBuf[26] = { 0 };
    printf("%lld\n", 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\n", timeBuf);

    //文件最后修改时间
    err = ctime_s(timeBuf, 26, &buf.st_mtime);
    if(err)
    {
        printf("Invalid arguments to ctime_s.");
        return -1;
    }
    printf("Time modified %s\n", timeBuf);

    system("pause");
    return 0;
}

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

时间: 2024-10-16 23:30:03

stat()函数--------------获取文件信息的相关文章

第九篇:使用 lstat 函数获取文件信息

前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个目的. 下面的程序将使用该函数获取文件类型信息并判断它的类型. 但在这之前,先要说明文件信息结构体和文件类型判定宏. 文件信息结构体 调用 lstat 函数将会把指定文件的信息存放到 stat 结构体中,这个结构体的定义大致如下: 文件类型判定宏 文件结构体中的文件类型字段是一个整数,对此,可以使用

【转】linux C++ 获取文件信息 stat函数详解

stat函数讲解 表头文件:    #include <sys/stat.h>             #include <unistd.h>定义函数:    int stat(const char *file_name, struct stat *buf);函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:      执行成功则返回0,失败返回-1,错误代码存于errno 错误代码:    ENOENT         参数fi

关于finfo_file函数获取文件mime值验证出错的问题

今天在做图片上传 验证图片mime值时 突然发现  个别特殊情况下finfo_file 获取的MIME值不能直接使用, 按照官方的写法是 $finfo=finfo_open(FILEINFO_MIME); $mime=finfo_file($finfo,$file_path); finfo_close($finfo); alert($mime); 这样子获得文件mime类型的 但是今天发现这样子不行,在文件传输中如果有charset设置传输类型为二进制流的话, 就会出现类似如下图那样: 可以明显

【转】windows c++获取文件信息——_stat函数的使用

_stat函数的功能 _stat函数用来获取指定路径的文件或者文件夹的信息. 函数声明 int _stat( const char *path, struct _stat *buffer ); 参数: path——文件或者文件夹的路径 buffer——获取的信息保存在内存中 返回值: 正确——返回0 错误——返回-1,具体错误码保存在errno中 struct _stat结构体 _stat结构体是文件(夹)信息的结构体,定义如下: struct stat { _dev_t st_dev; //文

php 获取文件信息相关基础函数

<?phpheader('content-type:text/html;charset=utf-8');date_default_timezone_set('PRC');/** * 文件信息相关API */$filename="./test1.txt";// $filename="test";//filetype($filename):获取文件的类型,返回的是文件的类型echo '文件类型为:',filetype($filename),'<br/>

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 sta

HttpWebRequest / HttpWebResponse 远程获取文件信息

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(path+filename); //创建一个请求(获得需要的文件信息) HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse(); string gorlseftDate = myRes.LastModified.ToString("yyyy-MM-dd hh:mm:ss");//获得dataServer.ra

linux stat系统调用,获取文件信息。

stat 函数原型: int stat(const char *path, struct stat *buf); struct stat 说明 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

node 的fs.state 获取文件信息

1. fs.stat()可以获取文件的信息,用法如下: const fs = require('fs'); fs.stat('./book.js',(err,stats)=>{ if(err) throw err; // 可以利用此处判断文件是否存在,不存在会报err. console.log(stats.isFIle())//判断是否为文件 console.log(stats.isDirectory())//判断是否为文件夹 console.log(stats) //打印文件相关信息 }) 原