- 依照惯例,我比较喜欢生成一个类来专门处理项目中可能涉及的文件解析,当然也方便后续其他项目使用可以直接拿过去,解耦大发好啊
有请本次的主角FileUtils
#ifndef FILEUTILS_H
#define FILEUTILS_H
#include <QObject>
class FileUtils : public QObject
{
Q_OBJECT
public:
explicit FileUtils(QObject *parent = nullptr);
public:
/**
* @Brief: ini文件读写
* @Author: springIce
* @Date: 2024-02-06
**/
static QVariant iniFileRead(const QString &filePath, const QString &group, const QString &key);
static bool iniFileWrite(const QString &filePath, const QString &group, const QString &key, const QString &val);
};
#endif // FILEUTILS_H
下面正式开始各种文件解析降解了
INI文件读取与写入
🚩🚩🚩
有请我的好兄弟 QSettings,帮助我读取和写入ini文件
- 头文件函数如下所示🍎🍎
/**
* @Brief: ini文件读写
* @Author: springIce
* @Date: 2024-02-06
**/
static QVariant iniFileRead(const QString &filePath, const QString &group, const QString &key);
static bool iniFileWrite(const QString &filePath, const QString &group, const QString &key, const QString &val);
- 为啥要声明为static啊,别问,问就是方便使用。
- 下面来看看函数的具体实现吧🍉🍉
QVariant FileUtils::iniFileRead(const QString &filePath, const QString &group, const QString &key)
{
QVariant res;
if (filePath.isEmpty() || key.isEmpty()) {
qDebug() << "necessary params are empty";
return res;
}
QSettings settings(filePath, QSettings::IniFormat);
settings.beginGroup(group);
res = settings.value(key);
settings.endGroup();
return res;
}
bool FileUtils::iniFileWrite(const QString &filePath, const QString &group, const QString &key, const QString &val)
{
if (filePath.isEmpty() || key.isEmpty() || val.isEmpty()) {
qDebug() << "necessary params are empty";
return false;
}
if (group.isEmpty()) {
qWarning() << "your group is General";
}
QSettings settings(filePath, QSettings::IniFormat);
if (!settings.isWritable()) {
qDebug() << "ini file can't be writed";
return false;
}
settings.beginGroup(group);
settings.setValue(key, val);
settings.endGroup();
return true;
}
简单说几句啊:
1、所见即所得,函数的命名不要求华丽,但是要能一眼看出来是干啥的;当然命名也不能太长,谁家函数命名一大串,看起来多费劲
2、对函数的输入输出要严格把控,输入进来的不能更改的参数一定要加const修饰,养成良好的编码习惯毕竟收益的是自己不;
3、有必要的话,一定要在函数最开始的地方对入参进行一些判空或者基本操作,保证入参不会对后续逻辑产生影响,最严重的的就是导致崩溃了,检查起来可是很头疼的;
🍭以上就是ini文件读写与写入的基本逻辑代码了,下面就是调用和具体现象了
//记得引入头文件哦
QString iniFilePath = "E:\\Qt\\Project\\Logout\\testFile\\myIniFile.ini";
FileUtils::iniFileWrite(iniFilePath, "Custom", "KHGTHH", "you_are_right");
qDebug() << FileUtils::iniFileRead(iniFilePath, "Custom", "KHGTHH").toString();
注册表信息读取与写入
🚩🚩🚩
其实也是使用QSettings,和ini文件读写大同小异,不同点就是修改format格式就好
QSettings settings(filePath, QSettings::NativeFormat);
📍📍偷偷告诉你一个利器,那自然是qt本身的帮助搜索啊,很好用很好用的
今天就先到这里,文章太长类一次性看起来也比较费劲,下次下次一定,期待下一弹的json和xml文件解析吧