提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
一、 获取文本内容
获取文本内容代码如下
void Widget::getfile(const QString &path)
{
path=QDir::toNativeSeparators(path);//将path中“\”转换为“/”
QFile file(path);
if(file.open(QIODevice::ReadOnly))
{
//读取文档内容
QString text=file.readAll();
//输出
qDebug()<<text;
file.close();
}
}
注:path为文本路径,不用修改“\”。
二、获取单个文件的MD5
方法1:单次读取
void Widget::getfile(const QString &path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly))
{
//读取文档内容
QString text=file.readAll();
//输出
ui->textBrowser->setText(text);
file.close();
}
}
方法2:多次读取
对于大文件,采用多次读取的方法获取文件MD5。
void Widget::getmd5(const QString &path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly))//打开文件(只读)
{
QByteArray content=file.readAll();
QByteArray md5=QCryptographicHash::hash(content,QCryptographicHash::Md5);
//输出
ui->label_2->setText(md5.toHex());
file.close();
}
}
三、例子
1.widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void getfile(const QString &path);
void getmd5(const QString &path);
private slots:
void on_btn_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
2.widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include<QDir>
#include<QFile>
#include<QCryptographicHash>
#include<QFileDialog>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::getfile(const QString &path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly))
{
//读取文档内容
QString text=file.readAll();
//输出
ui->textBrowser->setText(text);
file.close();
}
}
void Widget::getmd5(const QString &path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly))//打开文件(只读)
{
QByteArray content=file.readAll();
QByteArray md5=QCryptographicHash::hash(content,QCryptographicHash::Md5);
//输出
ui->label_2->setText(md5.toHex());
file.close();
}
}
void Widget::on_btn_clicked()
{
QString path=ui->lineEdit->text();
path=QDir::toNativeSeparators(path);
ui->label_2->clear();
ui->textBrowser->clear();
getfile(path);
getmd5(path);
}
3.ui界面
4.效果