• Qt5开发从入门到精通——第九篇三节( Qt5 文件及磁盘处理—— 文件大小及路径获取实例)


    CSDN话题挑战赛第2期
    参赛话题:学习笔记

    欢迎小伙伴的点评✨✨,相互学习c/c++应用开发。🍳🍳🍳
    博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩‍🚀

    前言

    本章节会给大家带来Qt5 文件及磁盘处理—— 文件大小及路径获取实例详解。

    一、日录操作与文件系统概述

    QDir 类具有存取目录结构和内容的能力,使用它可以操作目录、存取目录或文件信息、操
    作底层文件系统,而且还可以存取 Qt 的资源文件。
    Qt 使用 “/” 作为通用的目录分隔符和 URL 路径分隔符。如果在程序中使用 “/” 作为目录
    分隔符, Qt 会将其自动转换为符合底层操作系统的分隔符(如 Linux 使用 “/”, Windows 使用“ \ ”)。
    QDir 可以使用相对路径或绝对路径指向一个文件。 isRelative()和 isAbsolute() 函数可以判断
    QDir 对象使用的是相对路径还是绝对路径。如果需要将一个相对路径转换为绝对路径,则使用
    makeAbsolute() 函数。
    目录的路径可以通过 path() 函数返回,通过 setPath() 函数设置新路径。绝对路径使用
    absolutePath() 函数返回,目录名可以使用 dirName() 函数获得,它通常返回绝对路径中的最后一
    个元素,如果 QDir 指向当前目录,则返回"."。目录的路径可以通过 cd()和 cdUp() 函数改变。
    可以使用 mkdir()函数创建目录,使用 rename()函数改变目录名。
    判断目录是否存在可以使用 exists()函数,目录的属性可以使用 isReadable() 、 isAbsolute() 、
    isRelative()和 isRoot() 函数来获取。目录下有很多条目,包括文件、目录和符号连接,总的条目
    数可以使用 count()函数来统计。 entryList()函数返回目录下所有条目组成的字符串链表。可以使
    用 remove() 函数删除文件,使用 rmdir()函数删除目录。

    二、效果实例

    图一
    在这里插入图片描述

    三、原码解析

    main.cpp

    #include 
    #include 
    #include 
    #include 
    qint64 du(const QString &path)
    {
          QDir dir (path);
          qint64 size= 0;
          foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))
          {
              size += fileInfo.size (); //获取第一个dir文件夹内的占用空间
    
          }
          foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))
          {
              size+= du(path+QDir::separator()+subDir);  /*循环获得dir后获取的文件*/
          }
          char unit ='B';               /*记录数据的大小从B,K,M
          qint64 curSize=size;
          if(curSize>1024)
          {
              curSize/=1024;
              unit ='K';
              if (curSize>1024)
              {
                  curSize/=1024;
                  unit ='M';
                  if(curSize>1024)
                  {
                      curSize/=1024;
                      unit ='G';
                  }
              }
          }
          qDebug () <<curSize<<unit<<"\t"<<qPrintable (path) <<endl;
          return size;
    }
    
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QStringList args = a.arguments();    //获取路径
        QString path;
        if (args .count() >1)
        {
            path= args[1];
        }
        else
        {
           path = QDir::currentPath () ;
        }
        qDebug()<<path<<endl;
        du(path); //调用函数将路径上的文件夹输出到控制台
        return a.exec();
    }
    
    

    四、总结

    Qt5 文件及磁盘处理—— 文件大小及路径获取会在应用程序开发中经常用到的。

  • 相关阅读:
    【多线程】创建线程池有几种方式
    深入理解Java并发锁
    Java Future学习
    Ubuntu下安装Scala
    java八股文面试[JVM]——GC优化方案
    UI设计师岗位的基本职责八篇(合集)
    服务状态巡检:
    硬件设计评审,让我心态崩了
    Redis Centos 7 安装过程
    PCB材料简单介绍
  • 原文地址:https://blog.csdn.net/weixin_44759598/article/details/127120878