QT开发——文件操作(持续更新)
程序员文章站
2024-02-19 12:14:04
...
一、获取文件夹下所有的文件
#include <QDir>
QStringList getFile(const QString &path)
{
QStringList ret;
QDir dir(path);
//获取文件夹下所有的文件与文件夹
QFileInfoList infolist = dir.entryInfoList(QDir::Files|QDir::Dirs|QDir::NoDotAndDotDot);
for(int i = 0;i<infolist.count();++i)
{
QFileInfo info = infolist.at(i);
if(info.isDir())
{
QString subDir = info.absoluteFilePath();
QStringList files = getFile(subDir);
ret.append(files);
}
else
{
QString fileName = info.absoluteFilePath();
ret.append(fileName);
}
}
return ret;
}
二、获取文件的md5
百度百科:
MD5是文件签bai名,相当于我们的身份证 独一无二的。du
MD5在论坛上、软件发布时经常用,是zhi为了保证文件的正确dao性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。
每个文件都可以用MD5验证程序算出一个固定的MD5码来。软件作者往往会事先计算出他的程序的MD5码并帖在网上。
因此,在网上看到某个程序下载旁注明了MD5码时,可以把它记下来,下载了这个程序后用MD5验证程序计算你所下载的文件的MD5码,和你之前记下MD5码比较。
如果两者相同,那么你所下载的是原版。如果计算出来的和网上注明的不匹配,那么你下载的这个文件不完整,或是被别人动过手脚。
#include <QCryptographicHash>
QByteArray getFileMd5(const QString &fileName)
{
QFile file(fileName);
if(file.open(QIODevice::ReadOnly))
{
QCryptographicHash hash(QCryptographicHash::Md5);
while(!file.atEnd())
{
//读取100m
QByteArray content = file.read(100*1024*1024);
hash.addData(content);
}
QByteArray md5 = hash.result().toHex();
file.close();
return md5;
}
return QByteArray();
}
三、读取txt文件内容
void readFile(const QString &fileName)
{
QFile file(fileName);
if(file.open(QIODevice::ReadOnly))
{
QByteArray content = file.readAll();
qDebug()<<content;
file.close();
}
}