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
#include "class_file_operation.h"
#include <QFile>
#include <QtDebug>
#include <QDateTime>

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()<<file.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 <QMessageBox>
#include <QPalette>

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());
}

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

头文件:

#ifndef MAINWINDOW_FILEOPERATION_H
#define MAINWINDOW_FILEOPERATION_H

#include <QMainWindow>
#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 <QString>

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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

txwtech笛克特科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值