QT开发——文件操作(持续更新)

一、获取文件夹下所有的文件

#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();
    }
}

doing…

猜你喜欢

转载自blog.csdn.net/peixin_huang/article/details/107361080
今日推荐