QFile
是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能,支持文本和二进制文 件。 QFile 继承自 QIODevice ,因此它可以像其他IO设备一样使用。
主要功能
1. 文件读写: QFile 支持打开文件进行读取或写入操作
2. 文件信息:可以检索有关文件的信息,如大小、修改日期等。
3. 文件操作:提供了对文件进行重命名、移动、删除等操作的能力。
4. 错误处理: QFile 在操作文件时提供了错误处理机制,可以通过相应的函数检查和获取错误信息。
常用方法
open() :打开一个文件。需要指定模式(如只读、只写、读写等)。
close() :关闭文件。
read() 和 write() :用于读取和写入数据。
exists() :检查文件是否存在。
remove() :删除文件。
copy() :复制文件。
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_brnRead_clicked()
{
//1打开文件
//QFile file("C:/Users/wcx26/Desktop/C++QT/test.txt");
QFile file;
file.setFileName("C:/Users/wcx26/Desktop/C++QT/test.txt");
if(!file.open(QIODevice::ReadWrite)){
qDebug()<<"open error";
}
//读取文件
char context[100] = {'\0'};
if (file.read(context,100) == -1) return;
//3 输出文件内容
qDebug()<<context;
file.close();
}
void Widget::on_pushButton_2_clicked()
{
//写入
QFile file;
file.setFileName("C:/Users/wcx26/Desktop/C++QT/test2.txt");
if(!file.open(QIODevice::ReadWrite)){
qDebug()<<"open error";
}
int size = file.size();
char* context1 = new char(size);
context1 = "hello my name is daxv 晨曦";
if (file.write(context1,size) == -1) return;
//3 输出文件内容
qDebug()<<context1;
file.close();
}
TextStream
QTextStream 是一个功能强大的类,用于处理文本数据,特别是在需要考虑字符编码和文本格式化的情 况下。通过这些特性,它提供了一种灵活而强大的方式来读写和操作文本。
void Widget::on_btnstrRead_clicked()
{
QFile file;
file.setFileName("D:/QT/test.txt");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
qDebug() << "file open error";
}
QTextStream in(&file);
in.setCodec("UTF-8");
// QString context = in.read(file.size());
while(!in.atEnd()){
QString context = in.readLine();
qDebug() << context;
}
file.close();
}
void Widget::on_btnstreamWrite_clicked()
{
QFile file;
file.setFileName("D:/QT/test3.txt");
if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){
qDebug() << "file open error";
}
QTextStream out(&file);
out.setCodec("UTF-8");
out << "I write stream char to File";
file.close();
}