/*******************************************************************************
* 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
}
}