INIUtility.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /*******************************************************************************
  2. * Copyright(c) 2014 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:INIUtility.cs
  5. * 2.功能描述:INI配置文件操作类
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈冰 2014/11/17 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Runtime.InteropServices;
  15. using System.Text;
  16. namespace Dongke.IBOSS.PRD.Basics.Library
  17. {
  18. /// <summary>
  19. /// INI配置文件操作类
  20. /// </summary>
  21. public class INIUtility
  22. {
  23. // 放置单例
  24. private static Dictionary<IniFile, INIUtility> _dic = new Dictionary<IniFile, INIUtility>();
  25. // ini文件路径
  26. private string _iniFilePath;
  27. /// <summary>
  28. /// 文件
  29. /// </summary>
  30. public enum IniFile
  31. {
  32. /// <summary>
  33. /// Config文件
  34. /// </summary>
  35. Config,
  36. }
  37. /// <summary>
  38. /// 构造
  39. /// </summary>
  40. private INIUtility()
  41. {
  42. }
  43. /// <summary>
  44. /// 单例
  45. /// </summary>
  46. /// <param name="iniFile">配置文件</param>
  47. /// <returns></returns>
  48. public static INIUtility Instance(IniFile iniFile)
  49. {
  50. if (_dic.Keys.Contains(iniFile))
  51. {
  52. return _dic[iniFile];
  53. }
  54. else
  55. {
  56. INIUtility ini = new INIUtility();
  57. ini._iniFilePath = System.AppDomain.CurrentDomain.BaseDirectory + iniFile.ToString() + ".ini";
  58. _dic.Add(iniFile, ini);
  59. return ini;
  60. }
  61. }
  62. #region API函数声明
  63. /// <summary>
  64. /// 返回0表示失败,非0为成功
  65. /// </summary>
  66. /// <param name="section"></param>
  67. /// <param name="key"></param>
  68. /// <param name="val"></param>
  69. /// <param name="filePath"></param>
  70. /// <returns></returns>
  71. [DllImport("kernel32")]
  72. private static extern long WritePrivateProfileString(string section, string key,
  73. string val, string filePath);
  74. [DllImport("kernel32")]//返回取得字符串缓冲区的长度
  75. private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
  76. #endregion
  77. #region 读Ini文件
  78. /// <summary>
  79. /// 读Ini文件
  80. /// </summary>
  81. /// <param name="section">section</param>
  82. /// <param name="key">key</param>
  83. /// <returns></returns>
  84. public string ReadIniData(string section, string key)
  85. {
  86. if (File.Exists(_iniFilePath))
  87. {
  88. // 每次从ini中读取多少字节
  89. StringBuilder temp = new StringBuilder(2048);
  90. // section=配置节,key=键名,temp=上面,path=路径
  91. GetPrivateProfileString(section, key, "", temp, 2048, _iniFilePath);
  92. return temp.ToString().Trim();
  93. }
  94. else
  95. {
  96. return string.Empty;
  97. }
  98. }
  99. public static string ReadIniData(string iniFile, string section, string key)
  100. {
  101. if (File.Exists(iniFile))
  102. {
  103. // 每次从ini中读取多少字节
  104. StringBuilder temp = new StringBuilder(2048);
  105. // section=配置节,key=键名,temp=上面,path=路径
  106. GetPrivateProfileString(section, key, "", temp, 2048, iniFile);
  107. return temp.ToString().Trim();
  108. }
  109. else
  110. {
  111. return string.Empty;
  112. }
  113. }
  114. #endregion
  115. #region 写Ini文件
  116. /// <summary>
  117. /// 写Ini文件
  118. /// </summary>
  119. /// <param name="Section"></param>
  120. /// <param name="Key"></param>
  121. /// <param name="Value"></param>
  122. /// <returns></returns>
  123. public bool WriteIniData(string Section, string Key, string Value)
  124. {
  125. //if (File.Exists(_iniFilePath))
  126. {
  127. long OpStation = WritePrivateProfileString(Section, Key, Value, _iniFilePath);
  128. if (OpStation == 0)
  129. {
  130. return false;
  131. }
  132. else
  133. {
  134. return true;
  135. }
  136. }
  137. //else
  138. //{
  139. // return false;
  140. //}
  141. }
  142. #endregion
  143. }
  144. }