QT——文件IO
- 电脑硬件
- 2025-09-15 00:09:01

QFile 类
构造函数
QFile() 无参构造 仅仅构建一个QFile 对象,不设定文件名
QFile(文件名) 构建一个QFile对象的同时,设定文件名 但是注意,仅仅设定文件名,并不会打开该文件
设定文件名
QFile file file.setFileName(文件名) 并不会打开
打开文件
file.open(打开模式)
文件写
qint64 write(const char *data, qint64 maxSize)
file.write(数据,数据长度)//将data,最多maxSize个字节,写入file代表的文件中
qint64 write(const char *data)
file.write(数据)//将data,到结束符为止,写入file代表的文件中
qint64 write(const QByteArray &byteArray)
QByteArray本质是c语言的字符数组,做一段内存来管理 我们的数据一般是一个 QString 对象 so要将一个 QString 对象转换成 QByteArray 对象: QString str = "hello"//QString,有toLocal8Bit() :将QString转换成 QByteArray QByteArray qarr = str.toLocal8Bit();
class Widget : public QWidget { public: Widget(QWidget *parent = nullptr); ~Widget(); void save_data(const QString &filename,const QString &data); private: Ui::Widget *ui; QFile file; }; Widget::~Widget() { QString name=ui->lineEdit->text(); save_data("D:/name.text",name); delete ui; } void Widget::save_data(const QString &filename, const QString &data) { file.setFileName(filename); file.open(QFile::WriteOnly); file.write(data.toLocal8Bit()); file.close(); } 文件读qint64 read(char *data, qint64 maxSize)
char buf[64] = {0} file.read(buf,64)//从file文件中读取最多64个字节的数据,并且将读取到的数据写入buf中 返回读取到的数据的字节数
QByteArray read(qint64 maxSize)
QByteArray qarr = file.read(64)// 从file文件中,读取最多64个字节的数据,并且将读取到的数据,构建成一个QByteArray对象后返回
将 QByteArray 数据,转换成 QString 数据 1:在QByteArray 寻找,返回值是 QString,函数名是toXXXX,形参没有的函数 2:在QString的构造函数,寻找参数为 QByteArray 的构造函数 不支持中文 3:在QString的静态方法,寻找返回值为 QString,参数是 QByteArray的函数 找到 fromLocal8Bit(),支持中文
QByteArray readAll()
QByteArray arr = file.readAll()// 读取文件中的全部数据 //将读取到的数据,构建成 QByteArray 后返回
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); QString name=load_data("D:name.text"); ui->lineEdit->setText(name); } QString Widget::load_data(const QString &filename) { file.setFileName(filename); file.open(QFile::ReadOnly); QByteArray barr=file.readAll(); QString str=QString::fromLocal8Bit(barr); file.close(); return str; }下一篇
Linux文档编辑相关命令详解