Qt学习之QFile和QFileInfo

        Qt项目中对文件操作是必不可少的。顾名思义:QFile是文件对象类,QFileInfo是文件信息对象类,结合例子我们看一下用法。

       读的文件内容如下,以字符 “#” 或者 “;” 开始的为注释行。

[Extern_Item1]
;名称
Name=libccgext_cvi_64.so

;处理数据的最大线程数,缺省为空:30
DealThreads=32

;数据库最大线程数,缺省为空:10
DBThreads=

;心跳间隔,缺省为空:120秒
HeartInverval=

#参数配置1
LijdGod=

        案例主代码如下,on_pushButton_clicked 函数为 pushButton 按钮设置的槽函数。

#include "widget.h"
#include "ui_widget.h"

#include 
#include 
#include 
#include 
#include 
#include 

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

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

void Widget::on_pushButton_clicked()
{
    // 创建一个QFileDialog对象让用户选择打开文件
    QString file_name = QFileDialog::getOpenFileName(nullptr, "选择文件", ".", "*.ini");
    ui->lineEdit->setText(file_name);

    QFile fileObj(file_name);

    if(!fileObj.open(QIODevice::ReadWrite))
    {
        return;
    }

    // 打印文件属性
    QFileInfo fileInfoObj(fileObj);

    qDebug() << "文件名称:" << fileInfoObj.fileName();
    qDebug() << "文件后缀名:" << fileInfoObj.suffix();
    qDebug() << "文件路径:" << fileInfoObj.filePath();
    qDebug() << "文件大小:" << fileInfoObj.size();
    qDebug() << "文件创建时间:" << (fileInfoObj.created()).toString("yyyy-MM-dd HH:mm:ss");
    qDebug() << "文件最后修改时间:" << fileInfoObj.lastModified().toString("yyyy/MM/dd HH:mm:ss");

    // 文件全部读取
    // QByteArray bArry = fileObj->readAll();
    // ui->textEdit->setText(bArry.data());

    // 设置正则表达式,匹配注释行
    QRegExp *reg = new QRegExp("^(;|#).*");

    QString strFile;

    // 按行读取
    while(!fileObj.atEnd())
    {
        QByteArray bArry = fileObj.readLine();

        // 跳过注释行
        if(!reg->exactMatch(bArry.data()))
        {
            strFile += bArry.data();
        }
    }

    ui->textEdit->setText(strFile);

    fileObj.close();
}

        执行结果如下:

Qt学习之QFile和QFileInfo_第1张图片

你可能感兴趣的:(Qt学习,qt,QFileInfo,QFile)