欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

doing…

相关标签: QT C++