php程序里的configini_读取设置config.ini配置

classCSenseIni

{/************************************************************************/

/*写操作

* strSection 节

* strKey 键

* strValue 需要写入的值

* strFilePath 配置文件的全路径(wince中使用相对路径)*/

/************************************************************************/

public static void WriteIni(string strSection, string strKey, string strValue, stringstrFilePath)

{string strCurr =CPlatformConfig.CurrentPath;if (strCurr.Length < 2)

strCurr+=strFilePath;elsestrCurr+= "\\" +strFilePath;

INICommon(false, strSection, strKey, strValue, strCurr);

}/************************************************************************/

/*读操作

* strSection 节

* strKey 键

* strDefault 如果未找到相应键对应的值则填入此值

* strFilePath 配置文件的全路径(wince中只能使用绝对全路径)

* 返回: 指定键的相应值

* 说明: 如果在文件中未找到相应节则添加,未找到相应键亦添加,如果键对应的值为空串则使用默认值填充ini文件并返回

/************************************************************************/

public static string GetIni(string strSection, string strKey, string strDefault, stringstrFilePath)

{string strCurr =CPlatformConfig.CurrentPath;if (strCurr.Length < 2)

strCurr+=strFilePath;elsestrCurr+= "\\" +strFilePath;return INICommon(true, strSection, strKey, strDefault, strCurr);

}private static string[] Split(string input, stringpattern)

{string[] arr =System.Text.RegularExpressions.Regex.Split(input, pattern);returnarr;

}private static void AppendToFile(string strPath, stringstrContent)

{if (strContent.Length == 0)return;

FileStream fs= newFileStream(strPath, FileMode.Append);

StreamWriter streamWriter= newStreamWriter(fs, System.Text.Encoding.Default);

streamWriter.BaseStream.Seek(0, SeekOrigin.End);

streamWriter.WriteLine(strContent);

streamWriter.Flush();

streamWriter.Close();

fs.Close();

}private static void WriteArray(string strPath, string[] strContent)

{

FileStream fs= newFileStream(strPath, FileMode.Truncate);

StreamWriter streamWriter= newStreamWriter(fs, System.Text.Encoding.Default);

streamWriter.BaseStream.Seek(0, SeekOrigin.Begin);for (int i = 0; i < strContent.Length; i++)

{if (strContent[i].Trim() == "\r\n")continue;if (strContent[i].Trim() == "")continue;

streamWriter.WriteLine(strContent[i].Trim());

}

streamWriter.Flush();

streamWriter.Close();

fs.Close();

}//INI解析

private static string INICommon(bool isRead, string ApplicationName, string KeyName, string Default, stringFileName)

{string strSection = "[" + ApplicationName + "]";stringstrBuf;try{//a.文件不存在则创建

if (!File.Exists(FileName))

{

FileStream sr=File.Create(FileName);

sr.Close();

}//读取INI文件

System.IO.StreamReader stream = newSystem.IO.StreamReader(FileName, System.Text.Encoding.Default);

strBuf=stream.ReadToEnd();

stream.Close();

}catch(Exception e)

{returnDefault;

}string[] rows = Split(strBuf, "\r\n");stringoneRow;int i = 0;for (; i < rows.Length; i++)

{

oneRow=rows[i].Trim();//空行

if (0 ==oneRow.Length)continue;//此行为注释

if (';' == oneRow[0])continue;//没找到

if (strSection !=oneRow)continue;//找到了

break;

}//b.没找到对应的section,创建一节并创建属性

if (i >=rows.Length)

{

AppendToFile(FileName,"\r\n" + strSection + "\r\n" + KeyName + "=" +Default);returnDefault;

}//找到section

i+= 1; //跳过section

int bakIdxSection = i;//备份section的下一行

string[] strLeft;//查找属性

for (; i < rows.Length; i++)

{

oneRow=rows[i].Trim();//空行

if (0 ==oneRow.Length)continue;//此行为注释

if (';' == oneRow[0])continue;//越界

if ('[' == oneRow[0])break;

strLeft= Split(oneRow, "=");if (strLeft == null || strLeft.Length != 2)continue;//找到属性

if (strLeft[0].Trim() ==KeyName)

{//读

if(isRead)

{//c.找到属性但没有值

if (0 == strLeft[1].Trim().Length)

{

rows[i]= strLeft[0].Trim() + "=" +Default;

WriteArray(FileName, rows);returnDefault;

}else{//找到了

return strLeft[1].Trim();

}

}//写

else{

rows[i]= strLeft[0].Trim() + "=" +Default;

WriteArray(FileName, rows);returnDefault;

}

}

}//d.没找到对应的属性,创建之并赋为默认

rows[bakIdxSection] = rows[bakIdxSection] + "\r\n" + KeyName + "=" +Default;

WriteArray(FileName, rows);returnDefault;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值