运用MD5文件查重

我们已经了解MD5是什么了。

我们可以运用MD5查找重复文件。

QByteArray Widget::getfileMD5(const QString &fileName)
{
    QFile file(fileName);
    if(file.open(QIODevice::ReadOnly))
    {
        QCryptographicHash hash(QCryptographicHash::Md5);
        //按大小读取100M
        while(!file.atEnd())
        {
             QByteArray content = file.read(100*1024*1024);
             hash.addData(content);
        }
       QByteArray MD5 = hash.result();
       //qDebug()<<"The MD5 of file is "<<MD5.toHex();
        file.close();
       return MD5;
    }

    else
    {
        return QByteArray();
    }
}
QStringList files = getfile("C:/Users/DELL/Desktop/current study/testfilename");

    for(int i = 0; i<files.count();i++)
    {
        QString fileName = files.at(i);
        QByteArray md5 = getfileMD5(fileName);
        //qDebug()<<"filename为"<<fileName <<"MD5的值为"<< md5.toHex();
        fileMD5[md5].append(fileName);
    //qDebug()<<filelist;
    }
    //遍历fileMD5
    for(QHash<QByteArray,QStringList>::iterator it= fileMD5.begin();it!=fileMD5.end();it++)
    {
        qDebug()<<"MD5的值"<<(*it).first()<<"有多少个相同文件名count"<<it.value().count();
        if(it.value().count()>1)
        {
            qDebug()<<it.value();
        }
    }
在遍历QHsh时,在QT中,这个就表示了键值对了,
QHash<QByteArray,QStringList> fileMD5;
在C++时,我们学过,<>中是2个类型,我们这个是QByteArray与QStringList两个类型。
在QT中可以直接it.key()与it.value();访问。


原文链接: https://www.cnblogs.com/qq376142178/p/12392878.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    运用MD5文件查重

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/193827

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午6:30
下一篇 2023年2月12日 下午6:30

相关推荐