QT ini配置文件的读写(使用QTextStream类)

1、写ini配置文件

bool saveFile(const QString &fileFullName)
{
if(fileFullName.isEmpty())
return false;
QFile     fileOut;
QTextStream      outStream;
fileOut.setFileName(fileFullName);
if(!fileOut.open(QIODevice::WriteOnly))
{
qDebug("文件:%s写入失败!\n",qPrintable(fileFullName));
return false;
}
outStream.setDevice(&fileOut);
outStream << QObject::tr("[Config]\r\n");
outStream << QObject::tr("Abstract=testName\r\n"));
outStream << QObject::tr("Directory=%1\r\n").arg(QCoreApplication::applicationDirPath());
fileOut.close();
return true;
}

2、读取ini配置文件

bool loadFile(const QString &fileFullName)
{
if(fileFullName.isEmpty())
return false;
QFileInfo fileInfo(fileFullName);
if(!fileInfo.exists())//判断文件是否存在
{
qDebug("配置文件不存在,读取失败!\n");
return false;
}
QFile        fileIn;
QTextStream        *inStream;
QByteArray          fileByteArray;
int             fileSize;
char                fileBuf[CONFIG_FILE_MAX_SIZE];

fileIn.setFileName(fileFullName);
if(!fileIn.open(QIODevice::ReadOnly))
{
qDebug("文件:%s读取失败!\n",qPrintable(fileFullName));
return false;
}

fileSize = fileIn.read(fileBuf, CONFIG_FILE_MAX_SIZE);
fileIn.close();

/* 读取到类对象中 */
fileByteArray = QByteArray::fromRawData(fileBuf, fileSize);
inStream = new QTextStream(fileByteArray, QIODevice::ReadOnly);
QString        tempString;
tempString = inStream->readLine();
if(tempString != tr("[Config]"))
{
qDebug("配置文件组名错误!\n");
return false;
}
while (!(inStream->atEnd()))
{
tempString = inStream->readLine();
if(tempString.startsWith(tr("Abstract=")))
QString testName = tempString.mid(9);
else if(tempString.startsWith(tr("Directory=")))
QString Directory = tempString.mid(10);
else
{
qDebug("无效项!\n");
}
}
delete inStream;
fileIn.close();
return true;

}


3、配置文件格式

[Config]
Abstract=3sdddsds33211as
Directory=C:\Users\Administors\Desktop\新建文件夹 (2)


4、QSettings和QTextStream的区别

用QSettings保存纯英文配置文件较为方便,操作简单,无法处理组名和项名是中文的情况;

用QTextStream可以处理中文内容,且不用特殊处理,实际上,QTextStream是一个通用的文本文件读取类,这里只是借用他来保存ini文件。

此外,对于文件路径的保存,QSettings会自动多加入一个'\',读取的时候会自动去掉一个,而QTextStream不会对路径字符串做任何操作。比如路径"C:\Users\Administors\Desktop",用QSettings保存到文件的是"C:\\Users\\Administors\\Desktop",而QTextStream保存的是"C:\Users\Administors\Desktop"。


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lusirking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值