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 <QFileDialog> #include <QRegExp> #include <QFile> #include <QFileInfo> #include <QDebug> #include <QDateTime>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(); }
执行结果如下: