stat函数总结

最近使用了stat函数出现一种情况

    count_tiff_file = 0;

    DIR *pDir;
    struct dirent *pEntry;

    struct stat buf;
    pDir = opendir(PATH);

    if(pDir == NULL)
    {
        qDebug() << "opendir error";
        return;
    }

    while((pEntry = readdir(pDir)) != NULL)
    {

        if(strcmp(pEntry->d_name, ".") == 0 || strcmp(pEntry->d_name, "..") == 0)
            continue;  //jump not show file


          if(pEntry->d_type == 8) //general file
       {
         strcpy(tName_Size[file++], pEntry->d_name); //保存遍历到的文件名

           int ret = stat(pEntry->d_name, &buf);

          if(ret < 0)
          {
              qDebug() << "stat fail ";
              continue;
          }

         cout << buf.st_size << endl;

       }


    }

    closedir(pDir);

发现文件不存在。后来发现原来opendir打开和stat读取没有关系,即使打开目录到当前文件夹下,stat函数还是需要绝对路径找到文件,才能读出文件大小。将stat(pEntry->d_name, &buf);改为stat(path, &buf);就可以了。
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值