Qt实现获取文件大小与磁盘空间大小

 更新时间:2023年11月01日 09:46:40   作者:恋恋西风  
这篇文章主要为大家详细介绍了如何使用Qt实现获取文件大小与磁盘空间大小,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1.通过QFile获取文件大小

注意:返回的是字节个数

      QFile file("E:/59.raw");
      if (file.open(QIODevice::ReadOnly)) {
          qDebug() << file.size();// byte
      } else {
          qDebug() << "文件打开失败!";
      }

通过QFileInfo获取文件大小

    QFileInfo info("E:/55.raw");
    if (info.exists()) {
        qDebug() << info.size();
    } else {
        qDebug() << "文件路径不存在!";
    }

2. 获取磁盘空间

/**
 * @brief getDiskSpace 获取盘符的容量
 * @param flag 为true则求磁盘总容量,为false则求磁盘剩余容量
 * @return 返回容量,MB为单位
 */
qint64 getDiskSpace(QString path, bool flag)
{
    qint64 res = 0;
    QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes();
    foreach (QStorageInfo storageInfo, storageInfoList) {
        if(path.startsWith(storageInfo.rootPath())){
            if(flag){
                res = storageInfo.bytesTotal()/1024/1024 ;
            }else{
                res = storageInfo.bytesAvailable()/1024/1024 ;
            }
 
            break;
        }
    }
 
     return res;
} 

3 .获取选择路径下总文件大小

/**
 * @brief 获取路径下的文件大小:MB
 * @param filePath
 * @return
 */
qint64 getDirSizeMB(const QString filePath){
    qint64 size  = getDirSize(filePath);
    return size/MB;
}
 
/**
 * @brief 获取路径的文件大小:字节
 * @param filePath
 * @return
 */
qint64 getDirSize(const QString filePath)
{
    QDir tmpDir(filePath);
 
    qint64 size = 0;
 
    /*获取文件列表  统计文件大小*/
    foreach(QFileInfo fileInfo, tmpDir.entryInfoList(QDir::Files))
    {
        size += fileInfo.size();
    }
 
    /*获取文件夹  并且过滤掉.和..文件夹 统计各个文件夹的文件大小 */
    foreach(QString subDir, tmpDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
    {
        size += getDirSize(filePath + QDir::separator() + subDir); //递归进行  统计所有子目录
    }
 
    return size;
}

4. 转换大小单位

bit  === byte  

bit / 8

byte === KB

byte / 1024

KB = MB

KB / 1024

MB = GB

MB / 1024

GB === TB

GB / 1024

到此这篇关于Qt实现获取文件大小与磁盘空间大小的文章就介绍到这了,更多相关Qt获取文件与磁盘空间大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt禁止程序多开的实现示例

    Qt禁止程序多开的实现示例

    本文主要介绍了Qt 禁止程序多开的实现示例,主要介绍了三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • 从汇编看c++的默认析构函数的使用详解

    从汇编看c++的默认析构函数的使用详解

    本篇文章是对c++中默认析构函数的使用进行了详细的分析介绍。需要的朋友参考下
    2013-05-05
  • c/c++ 标准库 bind 函数详解

    c/c++ 标准库 bind 函数详解

    bind是一组用于函数绑定的模板。在对某个函数进行绑定时,可以指定部分参数或全部参数,也可以不指定任何参数,还可以调整各个参数间的顺序。这篇文章主要介绍了c/c++ 标准库 bind 函数 ,需要的朋友可以参考下
    2018-09-09
  • 详解C/C++内存管理

    详解C/C++内存管理

    内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,今天给大家分享C/C++内存管理的实例代码,需要的朋友参考下吧
    2021-06-06
  • C语言数组全面详细讲解

    C语言数组全面详细讲解

    数组是一组有序的数据的集合,数组中元素类型相同,由数组名和下标唯一地确定,数组中数据不仅数据类型相同,而且在计算机内存里连续存放,地址编号最低的存储单元存放数组的起始元素,地址编号最高的存储单元存放数组的最后一个元素
    2022-05-05
  • 使用Cline+deepseek实现VsCode自动化编程

    使用Cline+deepseek实现VsCode自动化编程

    Cline是一个免费且强大的VSCode插件,可以接入多种大模型API进行对话式编程,本文主要介绍了使用Cline+deepseek实现VsCode自动化编程,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • C++计算ICMP头的校验和实例

    C++计算ICMP头的校验和实例

    这篇文章主要介绍了C++计算ICMP头的校验和的方法,代码简单实用,对于校验ICMP报文来说有不错的实用价值,需要的朋友可以参考下
    2014-10-10
  • C++内存查找实例

    C++内存查找实例

    这篇文章主要介绍了C++内存查找实例,可实现Windows程序设计中的内存查找功能,需要的朋友可以参考下
    2014-10-10
  • C++保存txt文件实现方法代码实例

    C++保存txt文件实现方法代码实例

    这篇文章主要介绍了C++保存txt文件实现方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 关于虚函数实现多态的原理及分析

    关于虚函数实现多态的原理及分析

    这篇文章主要介绍了C++中如何实现多态问题,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论