• QT写入文件与读取文件内容


    QT写入文件与读取文件内容

     

    QT写入文件与读取文件内容-C++文档类资源-CSDN下载QT写入文件与读取文件内容更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86263528

    文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能。

    文本文件是指以纯文本格式存储的文件,例如用 Qt Creator 编写的 C++ 程序的头文件(上文件)和源程序文件(.cpp 文件)。HTML 和 XML 文件也是纯文本文件,只是其读取之后需要对内容进行解析之后再显示。

    Qt 提供了两种读写纯文本文件的基本方法:


    这些取值可以组合,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只读和文本方式打开文件。

    创建类文件方便调用:

    1. 用 QFile 类的 IODevice 读写功能直接进行读写
    2. 利用 QFile 和 QTextStream 结合起来,用流(Stream)的方法进行文件读写。
    3. QFile读写文本文件
    4. QFile 类是直接与 IO 设备打交道,进行文件读写操作的类,使用 QFile 可以直接打开或保存文本文件。
    5. QFile::open() 函数打开文件时需要传递 QIODevice::OpenModeFlag 枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag 类型的主要取值如下:
    6. QIODevice::ReadOnly:以只读方式打开文件,用于载入文件。
    7. QIODevice::WriteOnly:以只写方式打开文件,用于保存文件。
    8. QIODevice::ReadWrite:以读写方式打开。
    9. QIODevice::Append:以添加模式打开,新写入文件的数据添加到文件尾部。
    10. QIODevice::Truncate:以截取方式打开文件,文件原有的内容全部被删除。
    11. QIODevice::Text:以文本方式打开文件,读取时“\n”被自动翻译为换行符,写入时字符串结束符会自动翻译为系统平台的编码,如 Windows 平台下是“\r\n”。
    Class_File_Operation.cpp
    1. #include "class_file_operation.h"
    2. #include
    3. #include
    4. #include
    5. Class_File_Operation::Class_File_Operation()
    6. {
    7. }
    8. QString Class_File_Operation::ReadTxtFile(QString file_path)
    9. {
    10. QFile file(file_path);
    11. if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
    12. {
    13. return "error";
    14. }
    15. else
    16. {
    17. return file.readAll();
    18. }
    19. }
    20. void Class_File_Operation::WriteTxtFile(QString file_path, QString write_content)
    21. {
    22. QFile file(file_path);
    23. // if(!file.open(QIODevice::WriteOnly|QIODevice::Text))//只写方式打开,文件不存在则创建
    24. if(!file.open(QIODevice::Append|QIODevice::Text))
    25. {
    26. qDebug()<errorString();
    27. file.write("hello QT\nby txwtech--first time");
    28. // return "error";
    29. }
    30. else
    31. {
    32. QString addInfo = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")+write_content+"\n";
    33. char *pAddinfo;
    34. QByteArray qt_byte=addInfo.toUtf8();
    35. pAddinfo=qt_byte.data();
    36. file.write(pAddinfo);
    37. // file.Append("追加数据1");
    38. // return "ok";
    39. }
    40. }

    主窗口文件:

    MainWindow_FileOperation.cpp
    1. #include "mainwindow_fileoperation.h"
    2. #include "ui_mainwindow_fileoperation.h"
    3. #include
    4. #include
    5. MainWindow_FileOperation::MainWindow_FileOperation(QWidget *parent)
    6. : QMainWindow(parent)
    7. , ui(new Ui::MainWindow_FileOperation)
    8. {
    9. ui->setupUi(this);
    10. ui->textEdit_read_content->setTextColor(QColor(255,0,0)); //字体颜色
    11. ui->lineEdit_file_path->setBackgroundRole(QPalette::Light);
    12. ui->textEdit_write_content->setText("写入测试");
    13. }
    14. MainWindow_FileOperation::~MainWindow_FileOperation()
    15. {
    16. delete ui;
    17. }
    18. void MainWindow_FileOperation::on_action_about_triggered()
    19. {
    20. QMessageBox::information(this,"关于",tr("demo by txwtech\ncontact:txwtech@163.com"));
    21. }
    22. void MainWindow_FileOperation::on_pushButton_read_clicked()
    23. {
    24. ui->textEdit_read_content->setText( fOperation->ReadTxtFile(ui->lineEdit_file_path->text()));
    25. }
    26. void MainWindow_FileOperation::on_pushButton_write_clicked()
    27. {
    28. fOperation->WriteTxtFile(ui->lineEdit_file_path2->text(),ui->textEdit_write_content->toPlainText());
    29. }

    注意获取lineEdit与textEdit的区别
    ui->lineEdit_file_path->text()
    ui->textEdit_write_content->toPlainText()

    头文件:

    1. #ifndef MAINWINDOW_FILEOPERATION_H
    2. #define MAINWINDOW_FILEOPERATION_H
    3. #include
    4. #include "class_file_operation.h"
    5. QT_BEGIN_NAMESPACE
    6. namespace Ui { class MainWindow_FileOperation; }
    7. QT_END_NAMESPACE
    8. class MainWindow_FileOperation : public QMainWindow
    9. {
    10. Q_OBJECT
    11. public:
    12. MainWindow_FileOperation(QWidget *parent = nullptr);
    13. ~MainWindow_FileOperation();
    14. Class_File_Operation *fOperation;
    15. private slots:
    16. void on_action_about_triggered();
    17. void on_pushButton_read_clicked();
    18. void on_pushButton_write_clicked();
    19. private:
    20. Ui::MainWindow_FileOperation *ui;
    21. };
    22. #endif // MAINWINDOW_FILEOPERATION_H
    1. #ifndef CLASS_FILE_OPERATION_H
    2. #define CLASS_FILE_OPERATION_H
    3. #include
    4. class Class_File_Operation
    5. {
    6. public:
    7. Class_File_Operation();
    8. QString ReadTxtFile(QString file_path);
    9. void WriteTxtFile(QString file_path,QString write_content);
    10. };
    11. #endif // CLASS_FILE_OPERATION_H

  • 相关阅读:
    JavaScript-变量类型
    主成分分析法在图像压缩和重建中的应用研究-含Matlab代码
    操作系统 一个进程通过内核事件 来控制另一个线程的结束
    Redis入门完整教程:复制配置
    Spring中Bean的作用域
    监控易:IT基础资源监控的解决方案和价值
    OpenHarmony移植案例: build lite源码分析之hb命令__entry__.py
    华为Mate 60难以撼动苹果的市场份额
    数据结构-二叉排序树(建立、查找、修改)
    设计模式-Bridge模式(桥模式)
  • 原文地址:https://blog.csdn.net/txwtech/article/details/126024363