目录

qt获取磁盘总大小、可用空间、文件夹大小 (**)


使用QFileInfo查看文件相关信息----大小,创建时间,属性 (**)

QT 计算文件夹总大小并转换为B、KB、M、G

Qt - 将int转换为文件大小格式(KB,MB或GB)的最简单方法? (**)

Qt 之 获取文件大小

QT读取文件夹大小

===============================================

Qt - 将int转换为文件大小格式(KB,MB或GB)的最简单方法?

QFileInfo没有一个具体方法为,但here你可以找到一个简单的实现子类QFileInfo和实施这种新方法

QString QFileInfoHumanSize::size_human() 
{ 
    float num = this->size(); 
    QStringList list; 
    list << "KB" << "MB" << "GB" << "TB"; 

    QStringListIterator i(list); 
    QString unit("bytes"); 

    while(num >= 1024.0 && i.hasNext()) 
    { 
     unit = i.next(); 
     num /= 1024.0; 
    } 
    /// orignal :: return QString().setNum(num,'f',2)+" "+unit; 
    return QString::number(num,'f',2)+" "+unit; // update to this
} 

return QString::number(num,'f',2)+" "+unit; // update to this

使用QFileInfo查看文件相关信息----大小,创建时间,属性

    QString file = "E:/workspace/Data/ColorTransfer.txt";
    QFileInfo info(file);
    qint64 size = info.size();//文件大小,单位byte
    QDateTime created = info.created();//创建时间
    QDateTime lastModified = info.lastModified();//最后修改时间
    QDateTime lastRead = info.lastRead();//最后读取时间
    qDebug() << size;
    qDebug() << created;
    qDebug() << lastModified;
    qDebug() << lastRead;
    bool isDir = info.isDir();//是否是目录
    bool isFile = info.isFile();//是否是文件
    bool isSymLink = info.isSymLink();//是否是符号链接
    bool isHidden = info.isHidden();//是否隐藏
    bool isReadable = info.isReadable();//是否可读
    bool isWritable = info.isWritable();//是否可写
    bool isExecutable = info.isExecutable();//是否是可执行文件
    qDebug() << isDir<< isFile<< isSymLink<< isHidden<<
                isReadable<< isWritable<< isExecutable;

https://blog.csdn.net/yuxing55555/article/details/75195825

QT读取文件夹大小

转自QT读取文件夹大小_qt 判断qdir容量大小_战神无悔的博客-CSDN博客

根据文件夹路径,得到子文件及子文件夹信息,递归调用获得所有子文件大小并累加。
代码比较简单,这里强调一点:遍历所有子目录时,必须注明QDir::NoDotAndDotDot。原因是子目录中也包含.(本目录)和..(上一级目录)。假如不排除以上两个目录,可能会导致一系列(严重)错误。

quint64 MessagesWidget::dirFileSize(const QString &path)
{
QDir dir(path);
quint64 size = 0;
//dir.entryInfoList(QDir::Files)返回文件信息
foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files))
{
//计算文件大小
size += fileInfo.size();
}
//dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)返回所有子目录,并进行过滤
foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
//若存在子目录,则递归调用dirFileSize()函数
size += dirFileSize(path + QDir::separator() + subDir);
}
return size;
}
---------------------
作者:战神无悔
来源:CSDN
原文:https://blog.csdn.net/u011915578/article/details/48526035
版权声明:本文为博主原创文章,转载请附上博文链接!

QT 计算文件夹总大小并转换为B、KB、M、G

一、计算文件夹总大小

qint64 fileSize(const QString &path)
{
     QDir dir(path);
     qint64 size = 0;

     foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files)) {
         size += fileInfo.size();
     }

     foreach(QString subDir, dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)) {
         size += fileSize(path + QDir::separator() + subDir);
     }

     return size;
}

 

二、转换大小单位

QString change(const qint64 &size)
{
    int integer = 0;  //整数位
    int decimal = 0;  //小数位,保留三位
    char unit ='B';
    qint64 standardSize = size;
    qint64 curSize = size;

    if(standardSize > 1024) {
        curSize = standardSize * 1000;
        curSize /= 1024;
        integer = curSize / 1000;
        decimal = curSize % 1000;
        standardSize /= 1024;
        unit = 'K';
        if(standardSize > 1024) {
            curSize = standardSize * 1000;
            curSize /= 1024;
            integer = curSize / 1000;
            decimal = curSize % 1000;
            standardSize /= 1024;
            unit = 'M';
            if(standardSize > 1024) {
                curSize = standardSize * 1000;
                curSize /= 1024;
                integer = curSize / 1000;
                decimal = curSize % 1000;
                unit = 'G';
            }
        }
    }

    QString dec = "0";
    if (0 <= decimal && decimal <= 9) {
        dec = dec + dec + QString::number(decimal);
    }

    if (10 <= decimal && decimal <= 99) {
        dec = "0" + QString::number(decimal);
    }

    if (100 <= decimal && decimal <= 999) {
        dec = QString::number(decimal);
    }

    return QString::number(integer) + "." + dec + unit;
}

————————————————
版权声明:本文为CSDN博主「daboluo520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guorong520/article/details/105774217

Qt 之 获取文件大小

方式一:通过QFileInfo获取文件大小

    QFileInfo info("C:\\Users\\lenovo\\Desktop\\测试.txt");
    if (info.exists()) {
        qDebug() << info.size();
    } else {
        qDebug() << "文件路径不存在!";
    }

 

方式二:通过QFile获取文件大小

    QFile file("C:\\Users\\lenovo\\Desktop\\测试.txt");
    if (file.open(QIODevice::ReadOnly)) {
        qDebug() << file.size();
    } else {
        qDebug() << "文件打开失败!";
    }
————————————————
版权声明:本文为CSDN博主「莫成」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42312563/article/details/116013613

QT开发之获取文件大小

获取一个音频文件大小(字节)

    long int size = 0;
        QFile myFile(User_wav_path[0]);
        if (myFile.open(QIODevice::ReadOnly))
        {
            size  = myFile.size();  //when file does open.
            myFile.close();
        }
        qDebug() << size;

后续如果能获取、采样率、声道数、采样位数就可以算出音频文件的时长
————————————————
版权声明:本文为CSDN博主「大树学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bigtree_mfc/article/details/108626123

qt获取磁盘总大小、可用空间、文件夹大小

项目场景:

qt项目中存在大文件导出的场景,需要在导出前需要判断选择的目录的剩余空间大小是否符合要求。因此需要获取选择文件夹的可用空间和导出文件夹的大小。

获取磁盘空间

工具类下载,实现代码如下:

/**
 * @brief getDiskSpace 获取盘符的容量
 * @param path 路径(例如"C\")
 * @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()/MB;
            }else{
                res = storageInfo.bytesAvailable()/MB;
            }

            break;
        }
    }

     return res;
}

 

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

工具类下载,实现代码如下:

/**
 * @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;
}

————————————————
版权声明:本文为CSDN博主「九零B壹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010000915/article/details/130500685

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐