3.3
文件操作类
QFile
QFile
是
Qt
框架中用于文件处理的一个类。它提供了读取和写入文件的功能,支持文本和二进制文件。
QFile
继承自
QIODevice
,因此它可以像其他
IO
设备一样使用。
主要功能
1.
文件读写
:
QFile
支持打开文件进行读取或写入操作
2.
文件信息
:可以检索有关文件的信息,如大小、修改日期等。
3.
文件操作
:提供了对文件进行重命名、移动、删除等操作的能力。
4.
错误处理
:
QFile
在操作文件时提供了错误处理机制,可以通过相应的函数检查和获取错误信息。
常用方法
open()
:打开一个文件。需要指定模式(如只读、只写、读写等)。
close()
:关闭文件。
read()
和
write()
:用于读取和写入数据。
exists()
:检查文件是否存在。
remove()
:删除文件。
copy()
:复制文件。
示例代码
以下是使用
QFile
的一个简单例子:
#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; file.setFileName("D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_Open-Desktop_Qt_5_12_9_MinGW_64_bit-Debug/test.txt"); if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "file open error"; } // 2.读取文件 char text[100] = {'\0'}; if(file.read(text,100) == -1) { return; } // 3.输出文件及关闭 qDebug() << text; file.close(); } void Widget::on_btnWrite_clicked() { // 1.打开 QFile file; file.setFileName("D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_Open Desktop_Qt_5_12_9_MinGW_64_bit-Debug/test1.txt"); if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "file open error"; } // 2.写入 file.write("when I become winner,I will married.李子恒"); // 3.关闭 file.close(); }
3.3.3 QTextStream
QTextStream
的主要特性成一个表格。请看下表:


QTextStream
是一个功能强大的类,用于处理文本数据,特别是在需要考虑字符编码和文本格式化的情况下。通过这些特性,它提供了一种灵活而强大的方式来读写和操作文本。
使用示例
以下是一个更详细的示例,展示了如何使用
QTextStream
来读写文件:
#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; file.setFileName("D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_Open-Desktop_Qt_5_12_9_MinGW_64_bit-Debug/test.txt"); if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "file open error"; } // 2.读取文件 QTextStream in(&file); /* 多态,将子类进行联系 */ in.setCodec("UTF-8"); //QString context = in.read(file.size()); while(!file.atEnd()) { QString context = in.readLine(); qDebug() << context; } // 3.输出文件及关闭 file.close(); } void Widget::on_btnStreamWrite_clicked() { // 1.打开 QFile file; file.setFileName("D:/Embedded_learning/03.QT_Codeinlesson/build-P3_4_QFile_Open-Desktop_Qt_5_12_9_MinGW_64_bit-Debug/test2.txt"); if(!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "file open error"; } // 2.写入 QTextStream out(&file); out.setCodec("UTF-8"); out << "when I become winner,I will married.李子恒"; // 3.关闭 file.close(); }