Qt 常用方法 获取磁盘总大小、可用空间、文件夹大小 文件大小B KB M G转换

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

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt是一个跨平台的C++应用程序框架,它允许开发者使用统一的API来创建各种类型的应用程序,包括移动端、桌面、嵌入式和Web应用。Qt的网络框架提供了一些类和接口来读取和处理网络数据流。而pcapng(PCAP Next Generation Capture File Format)则是一种新的网络抓包文件格式,它支持更多的数据项和更灵活的数据结构,比以前的PCAP文件格式更易于扩展和升级。 要在Qt中读取pcapng文件,可以使用QtQtNetwork模块中的QNetworkDatagram类。该类可以从文件、套接字、网络接口等各种来源读取网络报文数据,并提供了一些方法来解析和处理数据。可以通过实例化一个QNetworkDatagram对象,并调用其readDatagram()方法来读取一个pcapng文件中的数据包,返回值包含所读取的数据大小和数据内容。 需要注意的是,pcapng格式的数据包可能比普通的PCAP格式数据包更复杂,需要考虑到数据的压缩、加密和分片等情况。在使用QNetworkDatagram类时,需要根据不同的数据包格式调用不同的解析函数来处理数据。另外,Qt提供了一些辅助工具类,如QNetworkDatagram::fromPcapPacket()和QNetworkDatagram::toPcapPacket(),可以方便地将pcapng数据包转换成普通的pcap数据包,或者从pcap数据包中提取出pcapng格式的数据。 之,在Qt中读取pcapng文件需要熟悉Qt的网络框架和QNetworkDatagram类的使用,同时还需要了解pcapng数据包格式的特点和解析方法,才能正确地读取和处理这种类型的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值