/******************************************************************************* * Copyright(c) 2014 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称:INIUtility.cs * 2.功能描述:INI配置文件操作类 * 编辑履历: * 作者 日期 版本 修改内容 * 陈冰 2014/11/17 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; namespace Dongke.IBOSS.PRD.Basics.Library { /// /// INI配置文件操作类 /// public class INIUtility { // 放置单例 private static Dictionary _dic = new Dictionary(); // ini文件路径 private string _iniFilePath; /// /// 文件 /// public enum IniFile { /// /// Config文件 /// Config, } /// /// 构造 /// private INIUtility() { } /// /// 单例 /// /// 配置文件 /// public static INIUtility Instance(IniFile iniFile) { if (_dic.Keys.Contains(iniFile)) { return _dic[iniFile]; } else { INIUtility ini = new INIUtility(); ini._iniFilePath = System.AppDomain.CurrentDomain.BaseDirectory + iniFile.ToString() + ".ini"; _dic.Add(iniFile, ini); return ini; } } #region API函数声明 /// /// 返回0表示失败,非0为成功 /// /// /// /// /// /// [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")]//返回取得字符串缓冲区的长度 private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath); #endregion #region 读Ini文件 /// /// 读Ini文件 /// /// section /// key /// public string ReadIniData(string section, string key) { if (File.Exists(_iniFilePath)) { // 每次从ini中读取多少字节 StringBuilder temp = new StringBuilder(2048); // section=配置节,key=键名,temp=上面,path=路径 GetPrivateProfileString(section, key, "", temp, 2048, _iniFilePath); return temp.ToString().Trim(); } else { return string.Empty; } } public static string ReadIniData(string iniFile, string section, string key) { if (File.Exists(iniFile)) { // 每次从ini中读取多少字节 StringBuilder temp = new StringBuilder(2048); // section=配置节,key=键名,temp=上面,path=路径 GetPrivateProfileString(section, key, "", temp, 2048, iniFile); return temp.ToString().Trim(); } else { return string.Empty; } } #endregion #region 写Ini文件 /// /// 写Ini文件 /// /// /// /// /// public bool WriteIniData(string Section, string Key, string Value) { //if (File.Exists(_iniFilePath)) { long OpStation = WritePrivateProfileString(Section, Key, Value, _iniFilePath); if (OpStation == 0) { return false; } else { return true; } } //else //{ // return false; //} } #endregion } }