目录
1.QFile类介绍:
- QFile 类是 Qt 框架中的一个用于处理文件的类。它提供了文件的读取、写入和关闭等功能,是一个非常强大的文件操作工具。
2.打开文件方法:
- open(QIODevice::OpenMode mode):在构造函数中声明了文件路径后,以指定模式打开文件。
- 常见模式有:
QIODevice::ReadOnly:只读模式
QIODevice::WriteOnly:只写模式
QIODevice::ReadWrite:读写模式
QIODevice::Append:追加模式
QIODevice::Truncate:截断模式(打开文件时清空文件内容)
3.读取文件方法:
- read(qint64 maxlen):从文件中读取最多 maxlen 字节的数据,并返回读取的数据。返回值是一个 QByteArray 对象。
- readLine(qint64 maxlen = 0):从文件中读取一行数据。如果提供了 maxlen 参数,则读取最多 maxlen 字节的数据,直到遇到行结束符为止。返回值是一个 QByteArray 对象。
- readAll():读取文件中的所有数据,并返回读取的数据。返回值是一个 QByteArray 对象。
4.写入文件方法:
- write(const QByteArray &data):将 QByteArray 对象中的数据写入文件。返回值是写入的字节数。
- write(const char *data, qint64 len):将长度为 len 的 data 字符数组写入文件。返回值是写入的字节数。
5.关闭文件/重命名文件/检查文件是否存在/删除文件:
- close():关闭文件。
- exists():静态函数,检查文件是否存在。
- remove():静态函数,删除文件。
- rename(const QString &newName):重命名文件。
6.实例演示:
- 以下是一个打开文本文件和保存文本文件的小程序,相当于一个记事本。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); this->setWindowTitle("记事本"); //创建指向菜单栏的指针 QMenuBar* menuBar=this->menuBar(); //创建菜单项,并将菜单项添加到菜单栏 QMenu* menu=new QMenu("文件"); menuBar->addMenu(menu); //创建两个动作,并将动作添加到菜单项 QAction* action_1=new QAction("打开"); QAction* action_2=new QAction("保存"); menu->addAction(action_1); menu->addAction(action_2); //创建一个纯文本输入框,创建一个文本对象用于设置文本属性,设置完成后将文本属性添加到文本输入框 //通过setCentralWidget设置窗口中央控件,会占满窗口并随着窗口大小改变而改变 edit=new QPlainTextEdit(); QFont font; font.setPointSize(13); edit->setFont(font); this->setCentralWidget(edit); //连接两个动作到槽函数 connect(action_1,&QAction::triggered,this,&MainWindow::handle_1); connect(action_2,&QAction::triggered,this,&MainWindow::handle_2); } MainWindow::~MainWindow() { delete ui; } //这是打开按钮 void MainWindow::handle_1() { //首先打开文件对话框,会返回文件的路径,使用qstring对象接收。 QString path=QFileDialog::getOpenFileName(this); //把文件名显示在状态栏中 QStatusBar* statusBar=this->statusBar(); statusBar->showMessage("文件路径为:"+path); //创建文件对象,在栈上,将路径传递进来,设置文件打开的方式 QFile file(path); bool ret=file.open(QIODevice::ReadOnly); //判断文件是否打开,open方法会返回一个布尔值,成功打开返回true if(!ret)//没有成功打开文件,返回即可 { statusBar->showMessage("文件打开失败"); return; } //创建一个qstring对象存储文本,然后将文本设置到纯文本输入控件中,关闭文件 QString text=file.readAll(); edit->setPlainText(text); file.close(); } //这是保存按钮 void MainWindow::handle_2() { //首先要在点击后,弹出一个文件保存对话框 QString path=QFileDialog::getSaveFileName(this); //创建qfile对象,并打开 QFile file(path); bool ret=file.open(QIODevice::WriteOnly); if(!ret) { QStatusBar* statusBar=this->statusBar(); statusBar->showMessage("文件打开失败"); return; } //创建一个qstring别名,指向输入控件中的文本,将文本转换格式后写入到文件 const QString& text=edit->toPlainText(); file.write(text.toUtf8()); file.close(); }