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获取文件与磁盘空间大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库,C++连接mysql有2种方法:利用ADO连接、利用mysql自己的api函数进行连接,下面看看如何用吧
    2013-12-12
  • C语言实现双人反弹球游戏

    C语言实现双人反弹球游戏

    这篇文章主要为大家详细介绍了C语言实现双人反弹球游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C语言编程动态内存分配常见错误全面分析

    C语言编程动态内存分配常见错误全面分析

    这篇文章主要介绍了C语言编程中动态内存分配的常见错误全面分析讲解,同样遇到过C语言动态内存分配各种问题的同学可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • C语言深入探究冒泡排序与堆排序使用案例讲解

    C语言深入探究冒泡排序与堆排序使用案例讲解

    算法中排序是十分重要的,而每一个学习计算机的都会在初期的时候接触到这种排序,下面这篇文章主要给大家介绍了关于c语言冒泡排序与堆排序使用的相关资料,需要的朋友可以参考下
    2022-05-05
  • C语言模拟掷骰子游戏

    C语言模拟掷骰子游戏

    这篇文章介绍了C语言模拟掷骰子游戏的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。需要的朋友可以收藏下
    2021-11-11
  • C语言实现音乐播放器的示例代码

    C语言实现音乐播放器的示例代码

    这篇文章主要和大家分享了一个C语言的小DEMO,可以实现音乐播放器功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • 一文详解C++中的类型转化

    一文详解C++中的类型转化

    说起类型转化,我们在C语言之前的学习中可以了解到,类型转换可以分为两种情况:隐式类型转化;显示类型转化。但是为什么在c++中还要继续对类型转化做文章呢?我们一起来看
    2023-04-04
  • 一篇文章带你了解C语言:入门基础

    一篇文章带你了解C语言:入门基础

    这篇文章主要介绍了C语言入门之基础知识详解,文中有非常详细的C语言使用教程及相关基础知识,对正在学习c语言的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-08-08
  • C/C++内存管理详情

    C/C++内存管理详情

    这篇文章主要通过描述了C/C++内存分布、C/C++的一些函数理方面来展开C/C++内存管理的内容,需要的朋友请参考下文
    2021-08-08
  • C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    这篇文章主要介绍了C++项目基于HuffmanTree实现文件的压缩与解压缩功能,本文给大家提到文件压缩的概念介绍及压缩方法,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08

最新评论