文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能。
文本文件是指以纯文本格式存储的文件,例如用 Qt Creator 编写的 C++ 程序的头文件(上文件)和源程序文件(.cpp 文件)。HTML 和 XML 文件也是纯文本文件,只是其读取之后需要对内容进行解析之后再显示。
Qt 提供了两种读写纯文本文件的基本方法:
这些取值可以组合,例如 QIODevice::ReadOnly | QIODevice::Text
表示以只读和文本方式打开文件。
创建类文件方便调用:
QIODevice::OpenModeFlag
枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag 类型的主要取值如下:Class_File_Operation.cpp
- #include "class_file_operation.h"
- #include
- #include
- #include
-
- Class_File_Operation::Class_File_Operation()
- {
-
- }
- QString Class_File_Operation::ReadTxtFile(QString file_path)
- {
- QFile file(file_path);
- if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
- {
- return "error";
- }
- else
- {
- return file.readAll();
- }
- }
- void Class_File_Operation::WriteTxtFile(QString file_path, QString write_content)
- {
- QFile file(file_path);
-
- // if(!file.open(QIODevice::WriteOnly|QIODevice::Text))//只写方式打开,文件不存在则创建
- if(!file.open(QIODevice::Append|QIODevice::Text))
- {
- qDebug()<
errorString(); - file.write("hello QT\nby txwtech--first time");
- // return "error";
- }
- else
- {
- QString addInfo = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")+write_content+"\n";
- char *pAddinfo;
- QByteArray qt_byte=addInfo.toUtf8();
- pAddinfo=qt_byte.data();
- file.write(pAddinfo);
- // file.Append("追加数据1");
- // return "ok";
- }
- }
主窗口文件:
MainWindow_FileOperation.cpp
- #include "mainwindow_fileoperation.h"
- #include "ui_mainwindow_fileoperation.h"
- #include
- #include
-
- MainWindow_FileOperation::MainWindow_FileOperation(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow_FileOperation)
- {
- ui->setupUi(this);
- ui->textEdit_read_content->setTextColor(QColor(255,0,0)); //字体颜色
- ui->lineEdit_file_path->setBackgroundRole(QPalette::Light);
- ui->textEdit_write_content->setText("写入测试");
-
- }
-
- MainWindow_FileOperation::~MainWindow_FileOperation()
- {
- delete ui;
- }
-
-
- void MainWindow_FileOperation::on_action_about_triggered()
- {
- QMessageBox::information(this,"关于",tr("demo by txwtech\ncontact:txwtech@163.com"));
- }
-
- void MainWindow_FileOperation::on_pushButton_read_clicked()
- {
- ui->textEdit_read_content->setText( fOperation->ReadTxtFile(ui->lineEdit_file_path->text()));
- }
-
- void MainWindow_FileOperation::on_pushButton_write_clicked()
- {
- fOperation->WriteTxtFile(ui->lineEdit_file_path2->text(),ui->textEdit_write_content->toPlainText());
- }
头文件:
- #ifndef MAINWINDOW_FILEOPERATION_H
- #define MAINWINDOW_FILEOPERATION_H
-
- #include
- #include "class_file_operation.h"
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow_FileOperation; }
- QT_END_NAMESPACE
-
- class MainWindow_FileOperation : public QMainWindow
- {
- Q_OBJECT
-
- public:
- MainWindow_FileOperation(QWidget *parent = nullptr);
- ~MainWindow_FileOperation();
- Class_File_Operation *fOperation;
-
- private slots:
- void on_action_about_triggered();
-
- void on_pushButton_read_clicked();
-
- void on_pushButton_write_clicked();
-
- private:
- Ui::MainWindow_FileOperation *ui;
- };
- #endif // MAINWINDOW_FILEOPERATION_H
- #ifndef CLASS_FILE_OPERATION_H
- #define CLASS_FILE_OPERATION_H
- #include
-
- class Class_File_Operation
- {
- public:
- Class_File_Operation();
- QString ReadTxtFile(QString file_path);
- void WriteTxtFile(QString file_path,QString write_content);
- };
-
- #endif // CLASS_FILE_OPERATION_H