IniFile.h源文件分析

本文分析了IniFile.h源文件,重点介绍了如何处理peercast.ini配置文件。 IniFile类包含currLine, nameStr, valueStr变量,用于存储文件中的行、变量名和值。提供了writeSection、writeIntValue等方法用于写入配置,以及readNext、getName、getIntValue等方法用于读取。在ServMgr::loadSettings中展示了读取配置文件的流程,通过readNext逐行读取并判断变量,从而获取所需设置。" 121496731,11239076,理解I/O的同步、异步、阻塞与非阻塞,"['java', 'linux', '并发编程', '操作系统', 'I/O处理']

peercast.ini的格式如下

[Server]
serverPort = 7144
autoServe = Yes
forceIP =
isRoot = No
maxBitrateOut = 0
maxRelays = 2
maxDirect = 0

IniFile类定义三个字符串变量,currLine,nameStr,valueStr

currentLine对应INI文件中的一行,例如serverPort = 7144

nameStr对应相应的变量名,例如serverPort

valueStr对应相应的变量值,例如7144

写入INI文件时根据写入变量值的不同提供几种写入方法:

 writeSection(const char *name)写入段,例如writeSection( "Server" )则写入[Server]

writeIntValue(const char *name, int iv)写入整型变量,writeIntValue( serverPort, 7144 ),则写入

serverPort = 7144,其他类似方法还有writeStrValue,writeBoolValue,writeLine等

读取INI文件时,readNext()每次读取INI文件中的一行到currLine中,并把相应的变量名和变量值读取到nameStr和valueStr中

getName()返回变量名,根据变量值类型的不同相应有getIntValue,getStrValue,getBoolValue

 

这里用loadSettings的部分代码解释一下读取配置文件的过程

void ServMgr::loadSettings(const char *fn)
{
 IniFile iniFile;

 if (!iniFile.openReadOnly(fn))
  saveSettings(fn);

 if (iniFile.openReadOnly(fn))
 {
  while (iniFile.readNext())
  {
   // server settings
   if (iniFile.isName("serverPort"))
    servMgr->serverHost.port = iniFile.getIntValue();
   else if (iniFile.isName("autoServe"))
    servMgr->autoServe = iniFile.getBoolValue();
   else if (iniFile.isName("autoConnect"))
    servMgr->autoConnect = iniFile.getBoolValue();
   else if (iniFile.isName("icyPassword"))  // depreciated
    strcpy(servMgr->password,iniFile.getStrValue());
   else if (iniFile.isName("forceIP"))
    servMgr->forceIP = iniFile.getStrValue();

也就是用readNext()逐行读取并用IF ELSE语句判断是否是要读的变量,直至读到文件末尾为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值