4月3日学习笔记

以下相关操作都是在QT开发环境下

1.计算文件的Md5码
2.文件的读取(非全部读取,每次读取100M)
3.使用qApp,使程序不至于卡死(笨办法)
4.对文件的递归读取

1.计算文件的Md5码

QCryptographicHash can be used to generate cryptographic hashes of binary or text data.

#include<QCryptographicHash>  //其中包含算文件的md5函数,文件一旦被修改,md5就会变
QFile file("D:/chrome下载位置/Basler_pylon_6.3.0.23157.exe");

    if (file.open(QIODevice::ReadOnly))//判断文件是否打开,返回值为bool类型
    {
        QCryptographicHash hash(QCryptographicHash::Md5);
        while(!file.atEnd())	//判断文件是否读完,如果没读完则进入循环
        {
            QByteArray content = file.read(100*1024*1024);//一次性读取100M
            hash.addData(content); //void addData(const QByteArray &data);
            qApp->processEvents();//在执行while循环的过程中刷新qapplication,使界面不至于卡死
        } 
        QByteArray md5 = hash.result();    //Returns the final hash value.
        qDebug()<< md5 << ""<< md5.toHex();//QByteArray转化为hex格式要不然就会显示乱码
        
        file.close();	
        }

2. 对文件的递归读取

QStringList Widget::getFiles(const QString &path){ //QStringList是一个字符串列表
    QStringList ret;
    QDir dir(path);
    //不要点和点点,点表示当前目录,点点表示上一级目录
    QFileInfoList inforlist = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);//返回文件信息
    for(int i = 0; i<inforlist.count(); ++i)
    {
        QFileInfo info = inforlist.at(i);
        if(info.isDir())
        {
            QString subDir =info.absoluteFilePath();
            //如果是目录,那就启用getfile,传入目录,参数
            QStringList files = getFiles(subDir);
            ret.append(files);
        }
        else
        {
            QString fileName = info.absoluteFilePath();
            ret.append(fileName);
        }
    }
    return ret;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值