QT学习之文件读写操作

一、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 
#include 
#include 
#include 
#include 
#include 
#include 

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

三、效果

QT学习之文件读写操作_第1张图片

四、打印文件信息

首先包含头文件

#include 
#include 
#include 

//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;
    }

你可能感兴趣的:(QT,嵌入式,C++,qt,学习,ui)