我们已经了解MD5是什么了。
我们可以运用MD5查找重复文件。
QByteArray Widget::getfileMD5const QString &fileName)
{
QFile filefileName);
iffile.openQIODevice::ReadOnly))
{
QCryptographicHash hashQCryptographicHash::Md5);
//按大小读取100M
while!file.atEnd))
{
QByteArray content = file.read100*1024*1024);
hash.addDatacontent);
}
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");
forint i = 0; i<files.count);i++)
{
QString fileName = files.ati);
QByteArray md5 = getfileMD5fileName);
//qDebug)<<"filename为"<<fileName <<"MD5的值为"<< md5.toHex);
fileMD5[md5].appendfileName);
//qDebug)<<filelist;
}
//遍历fileMD5
forQHash<QByteArray,QStringList>::iterator it= fileMD5.begin);it!=fileMD5.end);it++)
{
qDebug)<<"MD5的值"<<*it).first)<<"有多少个相同文件名count"<<it.value).count);
ifit.value).count)>1)
{
qDebug)<<it.value);
}
}
在遍历QHsh时,在QT中,这个就表示了键值对了,
QHash<QByteArray,QStringList> fileMD5;
在C++时,我们学过,<>中是2个类型,我们这个是QByteArray与QStringList两个类型。
在QT中可以直接it.key)与it.value);访问。