/******************************************************************
*
* ^_^ 恶猫 独门商标 挖哈哈
*
* QQ:\>23559055
*
* Site:\>http://emao.me
*
* ================================================================
*
* 说明:
*
* 1.命名空间: Emao_CfgManager
* 类名 : CfgManager
*
* 2.声明: CfgManager cm = new CfgManager();
*
* 3.具体方法自己看代码吧哈。简单的很。
*
* 分别是:add() readAll() writeAll()
*
******************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;
using System.Runtime.InteropServices; namespace Emao_CfgManager
{
public class CfgManager
{
private Dictionary<string ,string> dict= new Dictionary<string,string>();
private string filename = Application.StartupPath + @"\config.ini"; #region API
[DllImport("kernel32.dll")]
public extern static int GetPrivateProfileString(string segName, string keyName, string sDefault, byte[] bt, int nSize, string fileName);
[DllImport("kernel32.dll")]
public extern static int WritePrivateProfileString(string segName, string keyName, string sValue, string fileName); [DllImport("kernel32.dll")]
public extern static int GetPrivateProfileSection(string segName, StringBuilder buffer, int nSize, string fileName);
[DllImport("kernel32.dll")]
public extern static int WritePrivateProfileSection(string segName, string sValue, string fileName); #endregion #region constructure
public CfgManager()
{
ReadAll();
}
public CfgManager(string inipath)
{
filename = inipath;
ReadAll();
}
#endregion #region method
public int Add(object key, object value)
{
if (this.dict.ContainsKey(key.ToString()))
this.dict[key.ToString()] = value.ToString();
else
this.dict.Add(key.ToString(), value.ToString());
return this.dict.Count;
}
public void ReadAll()
{
this.dict.Clear();
//读取ini文件所有
StringBuilder sb = new StringBuilder();
Byte[] bt = new Byte[];
int len = GetPrivateProfileString("Config", null, "", bt, bt.GetUpperBound(), filename);
if (len != )
{
int start = ;
for (int i = ; i < len; i++)
{
if ((bt[i] == ) && ((i - start) > ))
{
String s = Encoding.GetEncoding().GetString(bt, start, i - start);
Byte[] temp = new Byte[];
int i2 = GetPrivateProfileString("Config", s, "", temp, , filename);
string value = System.Text.Encoding.Default.GetString(temp).Replace('\0', ' ');
this.dict.Add(s, value.TrimEnd());
start = i + ;
}
}
}
}
public void ReadAll(string sectionName)
{
this.dict.Clear();
//读取指定节点
}
public void WriteAll()
{
foreach (var dic in dict)
{
WritePrivateProfileString("Config",dic.Key,dic.Value,filename);
}
}
public string this[string key]
{
get
{
if (key.Trim() == "")
{
return "";
}
if (!this.dict.ContainsKey(key)) return "";
return this.dict[key];
}
set
{
if (!this.dict.ContainsKey(key))
this.dict.Add(key, value);
else
this.dict[key] = value;
}
}
#endregion #region Function #endregion #region property
public int Count
{
get { return this.dict.Count; }
}
#endregion }
}

原文:http://www.oschina.net/code/snippet_191468_13277

最新文章

  1. 【原创】--linux平台下opencv安装
  2. 2016&quot;百度之星&quot; - 初赛(Astar Round2A)Gym Class(拓扑排序)
  3. flex 图片旋转(解决公转和自转问题)
  4. 【BZOJ 1877】 [SDOI2009]晨跑
  5. 转:搭建Hive的图形界面
  6. HDU2111 Saving HDU 【贪心】
  7. thinkPHP中省市级联下拉列表
  8. PowerShell 批量导入/导出Active Directory
  9. uptime 命令详解
  10. C# md5加密方法
  11. 关于Windows下程序执行的说明
  12. 使用Visual Studio Team Services敏捷规划和项目组合管理(二)——VSTS中的工作项
  13. RabbitMQ详解(三)------RabbitMQ的五种队列
  14. HDU2204 Eddy&#39;s爱好
  15. MySQL安装教程(mysql5.6_bundle)
  16. 安装Ubuntu16.04与windows10双系统后,如何修改启动默认设置
  17. 前后端分离之mockjs实战demo
  18. 八、Java的可变参数例子
  19. Git---远程仓库之从远程仓库克隆03
  20. 针对Restful风格参数传递的请求获取真实url

热门文章

  1. Greenplum获取表结构
  2. PowerDesigner 15.2入门学习 二
  3. [译]line clampin让文字在指定的行数内省略号显示
  4. 网页FLASH幻灯片播放带链接源代码 pixviewer.swf使用(转)
  5. JDK API从下载到使用
  6. Variance
  7. iOS中集成ijkplayer视频直播框架
  8. linux下C++ 插件(plugin)实现技术
  9. EBS Technology Codelevel Checker (ETCC)
  10. 《zw版&#183;Halcon-delphi系列原创教程》 Halcon分类函数002&#183;AI人工智能