QT学习之文件读写操作

本文介绍了Qt中QFile类进行文件读写的基本操作,包括以不同模式打开文件、读取内容、写入数据。同时,展示了如何使用QTextStream进行格式化输入输出,以及QFileInfo类获取文件信息的方法。通过实例代码展示了读取文件内容到文本编辑器,追加写入文件,以及文件属性如大小、后缀名、创建和修改日期的打印。此外,还演示了与QTextStream结合使用进行文本的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、QFile 对文件进行读写操作

1、 QFile进行读写操作
2、 QFile file( path 文件路径)
3、 读
(1) file.open(打开方式) QIODevice::readOnly
(2) 全部读取 file.readAll() 按行读 file.readLine() atend()判断是否读到文件尾
(3)默认支持编码格式 utf-8
(4)利用编码格式类 指定格式 QTextCodeC
(5)QTextCodec * codec = QTextCodec::codecForName(“gbk”);
(6) ui->textEdit->setText( codec->toUnicode(array) );
(7)文件对象关闭 close
4、 写
(1) file.open( QIODevice::writeOnly 或 Append)
(2) file.write(内容)
(3) file.close 关闭
5、读写模式
QIODevice::ReadOnly   //以只读的方式打开(文件不存在出错)

QIODevice::WriteOnly  //以只写的方式打开,打开时文件内原内容清空(文件不存在则创建)

QIODevice::ReadWrite  //以读写的方式打开文件

QIODevice::Append     //已追加的方式打开文件,新写入文件的数据添加到文件尾部

QIODevice::Truncate   //以重写的方式打开文件,文件打开时原有内容全部清空

QIODevice::Text       //以文本的方式打开文件。读取时,将' '翻译为换行符;写入时,将行结束符转换成本地格式

二、代码

#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QFile>
#include <QTextCodec>
#include <QFileInfo>
#include <QDebug>
#include <QDateTime>
#include <QString>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);


    static QString path;


    //点击选取文件按钮,弹出文件对话框
    connect(ui->pushButton, &QPushButton::clicked, [=](){

        //显示打开文件窗口
        path = QFileDialog::getOpenFileName(this, "打开文件","/home/xcl/qt");//返回一个文件的路径

        //将路径放入到lineEdit中
        ui->lineEdit->setText(path);//在lineEdit显示路径

        //编码格式类
        //QTextCodec * codec = QTextCodec::codecForName("gbk");//如果文件格式为GBK,需要做格式转码

        //读取内容 放入到 textEdit中
        // QFile默认支持的格式是 utf-8
        QFile file(path); //参数就是读取文件的路径
        //设置打开方式
        file.open(QIODevice::ReadOnly);//只读模式


        //第一种方式
       // QByteArray array = file.readAll();//全部读出 ,返回值为 QByteArray


        //第二种方式
        QByteArray array;
        while( !file.atEnd())//判断是否读到文件尾
        {
            array += file.readLine(); //按行读,追加
        }


        //将读取到的数据 放入textEdit中,显示出来
        ui->textEdit->setText(array);//类型隐式转换
        //ui->textEdit->setText( codec->toUnicode(array)  );//格式转码

        file.close();

    });




    //写文件
    connect(ui->pushButton_2, &QPushButton::clicked, [=](){

        QFile file(path);

        //进行写文件
        file.open(QIODevice::Append); //用追加方式进行写
        file.write("我是新写入的数据!!!");
        file.close();


    });


}

Widget::~Widget()
{
    delete ui;
}

三、效果

在这里插入图片描述

四、打印文件信息

首先包含头文件

#include <QFileInfo>
#include <QDebug>
#include <QDateTime>

//QFileInfo 文件信息类
QFileInfo info(path);//参数为文件的路径

qDebug() << "大小" << QString::number(info.size()) << "后缀名" << info.suffix() << " 文件名称:"<<info.fileName() << " 文件路径:"<< info.filePath();
qDebug() << "创建日期" << info.created().toString("yyyy/MM/dd hh:mm:ss ap t");
qDebug() << "最后修改日期"<<info.lastModified().toString("yyyy-MM-dd hh:mm:ss");


在这里插入图片描述

五、与QTextStream结合使用

//输入文本流
QFile file("output.txt");
if(file.open(QFile::WriteOnly | QFile::Truncate))
{
    QTextStream out(&file);  //创建写入流
    out << "PI:" << qSetFieldWidth(10) << left << 3.1415926;//写入数据
    out << "
     //写入数据
}
file.close();


//输出文件流
QFile fileOpen("output.txt");
if(! fileOpen.open(QFile::ReadOnly | QIODevice::Text))
    qDebug() << fileOpen.errorString();
    QTextStream in(&fileOpen); //创建输出流
    while(!in.atEnd())
    {
      QString oneLine = in.readLine();  //读取一行
      qDebug() << oneLine;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值