Wince 下C#使用INI文件

 

using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Collections;namespace SJAnalyzer //我的空间命名,你可以需要改一下。

  { class ceIniFiles { string IniFileName;char[] TrimChar ={ ' ', '\t' };public ceIniFiles(string IniF)

  { IniFileName = IniF;} public string[] GetSects()

  { string[] Sects=null;

  if (File.Exists(IniFileName))

  { string str;ArrayList ls = new ArrayList();TextReader tr = File.OpenText(IniFileName);while ((str = tr.ReadLine()) != null)

  { str = str.Trim();if ((str.StartsWith("[")) && (str.EndsWith("]")))

  ls.Add(str);} tr.Close();if (ls.Count > 0)

  { Sects =new string[ls.Count];for ( int i=0;i<ls.Count ;i++)

  { Sects[i] = ls[i].ToString();} return Sects;} public int WriteString(string sect, string keystr, string valuestr)

  { ArrayList ls = new ArrayList();bool SectOK = false;bool SetOK = false;if (File.Exists(IniFileName))

  { int pos1;string substr;string str;TextReader tr = File.OpenText(IniFileName);while ((str = tr.ReadLine()) != null)

  { ls.Add(str);} tr.Close();//开始寻找关键字,如果找不到,则在这段的最后一行插入,然后再整体的保存一下INI文件。

  for (int i = 0; i < ls.Count; i++)

  { str = ls[i].ToString();if (str.StartsWith("[") && SectOK) //先判断是否到下一段中了,如果本来就是最后一段,那就有可能永远也不会发生了。

  { SetOK = true; //如果在这一段中没有找到,并且已经要进入下一段了,就直接在这一段末添加了。

  ls.Insert(i, keystr.Trim() + "=" + valuestr);break;//如果到下一段了,则直接退出就好。

  } if (SectOK)

  { pos1 = str.IndexOf("=");if (pos1 > 1)

  { substr = str.Substring(0, pos1);substr.Trim(TrimChar);//如果在这一段中找到KEY了,直接修改就好了。

  if (substr.Equals(keystr, StringComparison.OrdinalIgnoreCase) && SectOK) //是在此段中,并且KEYSTR前段也能匹配上。

  { SetOK = true;ls[i] = keystr.Trim() + "=" + valuestr;break;} if (str.StartsWith("[" + sect + "]")) //判断是否到需要的段中了。

  SectOK = true;} if (SetOK == false)

  { SetOK = true;if (!SectOK) //如果没有找到段,则需要再添加段。

  { ls.Add("[" + sect + "]");} ls.Add(keystr.Trim() + "=" + valuestr);} } //如果文件不存在,则需要建立文件。

  else { ls.Clear();ls.Add("##文件创建:" + DateTime.Now.ToString() + "##");ls.Add("[" + sect + "]");ls.Add(keystr.Trim() + "=" + valuestr);} if (File.Exists(IniFileName)) //删除源文件。

  { File.Delete(IniFileName);} TextWriter tw= File.CreateText(IniFileName);//string[] strList = new string[ls.Count];for (int i = 0; i < ls.Count; i++)

  { //strList[i] = ls[i].ToString();tw.WriteLine(ls[i].ToString());} tw.Flush();tw.Close();//File.WriteAllLines(IniFileName, strList);return 0;} public string ReadString(string sect, string keystr, string defaultstr)

  { string retstr = defaultstr;if (File.Exists(IniFileName))

  { bool SectOK = false;int pos1;string substr;string str;ArrayList ls = new ArrayList();TextReader tr = File.OpenText(IniFileName);while ((str = tr.ReadLine()) != null)

  { str = str.Trim();if (str.StartsWith("[") && SectOK) //先判断是否到下一段中了。

  { break;//如果到下一段了,则直接退出就好。

  } if (SectOK)

  { pos1 = str.IndexOf("=");if (pos1 > 1)

  { substr = str.Substring(0, pos1);substr.Trim(TrimChar);if (substr.Equals(keystr, StringComparison.OrdinalIgnoreCase)) //是在此段中,并且KEYSTR前段也能匹配上。

  { retstr = str.Substring(pos1 + 1 )。Trim(TrimChar) ;break;} if (str.StartsWith("[" + sect + "]")) //判断是否到需要的段中了。

  SectOK = true;} tr.Close();} return retstr;} //读整数public int ReadInteger(string Section, string Ident, int Default)

  { string intStr = ReadString(Section, Ident, Convert.ToString(Default));try { return Convert.ToInt32(intStr);} catch { return Default;}

  //写整数public void WriteInteger(string Section, string Ident, int Value)

  { WriteString(Section, Ident, Value.ToString());}

  //读布尔public bool ReadBool(string Section, string Ident, bool Default)

  { try { return Convert.ToBoolean(ReadString(Section, Ident, Convert.ToString(Default)));} catch { return Default;} //写Bool public void WriteBool(string Section, string Ident, bool Value)

  { WriteString(Section, Ident, Convert.ToString(Value));}

  / //使用此INI文件的特例(自己使用)

  public string GetParam(string KeyStr, string Default)

  { string str;str = this.ReadString("Params", KeyStr, "???");if (str=="???")

  { this.WriteString("Params",KeyStr,Default);str = Default;} return str ;} public void UpdateParam(string KeyStr, string ValueStr)

  { this.WriteString("Params", KeyStr, ValueStr);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值