大容量文本读取写入时优选第二种方式
.h以及.cpp文件如下截图:
一. 使用QFile读取写入
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_btnRead_clicked();
void on_btnWrite_clicked();
void on_btnstreamRead_clicked();
void on_btnstreamWrite_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include<QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnRead_clicked()
{
//1.打开文件
QFile file("F:/QT_Documents/test.txt");
if(!file.open(QIODeviceBase::ReadOnly | QIODeviceBase::Text))
{
qDebug()<<"file open error!";
}
//方式2
//QFile file();
//file.setFileName("F:/QT_Documents/test.txt");
//2.读取文件
// int size = file.size();
// char *context = new char(size);
char context[100] = {'\0'};
if(file.read(context,100)==-1)
return;
//3.输出文件内容
qDebug()<< context;
//4.关闭文件
file.close();
}
void Widget::on_btnWrite_clicked()
{
//1.打开文件
QFile file("F:/QT_Documents/test.txt");
file.open(QIODeviceBase::WriteOnly | QIODeviceBase::Text);
//2.写入文件
file.write("Wang Wang Wang");
//3.关闭文件
file.close();
}
二.使用QTextStream读取写入
widget.h文件相同
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include<QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnstreamRead_clicked()
{
//1.打开文件
QFile file("F:/QT_Documents/test.txt");
if(!file.open(QIODeviceBase::ReadOnly | QIODeviceBase::Text))
{
qDebug()<<"file open error!";
}
QTextStream in(&file);
while(!in.atEnd())
{
QString context=in.readLine();
qDebug()<<context;
qDebug()<<"------------------";
}
QString context = in.read(file.size());
qDebug()<<context;
file.close();
}
void Widget::on_btnstreamWrite_clicked()
{
//1.打开文件
QFile file("F:/QT_Documents/test1.txt");
if(!file.open(QIODeviceBase::WriteOnly | QIODeviceBase::Text))
{
qDebug()<<"file open error!";
}
QTextStream out(&file);
out << "Mike Wang is coming";
file.close();
}
如有帮助,欢迎点赞支持博主更新^O^