INIUtility.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. /// <summary>
  37. /// SAP_HEGII
  38. /// </summary>
  39. SAP_HEGII
  40. }
  41. /// <summary>
  42. /// 构造
  43. /// </summary>
  44. private INIUtility()
  45. {
  46. }
  47. /// <summary>
  48. /// 单例
  49. /// </summary>
  50. /// <param name="iniFile">配置文件</param>
  51. /// <returns></returns>
  52. public static INIUtility Instance(IniFile iniFile)
  53. {
  54. if (_dic.Keys.Contains(iniFile))
  55. {
  56. return _dic[iniFile];
  57. }
  58. else
  59. {
  60. INIUtility ini = new INIUtility();
  61. ini._iniFilePath = System.AppDomain.CurrentDomain.BaseDirectory + iniFile.ToString() + ".ini";
  62. _dic.Add(iniFile, ini);
  63. return ini;
  64. }
  65. }
  66. #region API函数声明
  67. /// <summary>
  68. /// 返回0表示失败,非0为成功
  69. /// </summary>
  70. /// <param name="section"></param>
  71. /// <param name="key"></param>
  72. /// <param name="val"></param>
  73. /// <param name="filePath"></param>
  74. /// <returns></returns>
  75. [DllImport("kernel32")]
  76. private static extern long WritePrivateProfileString(string section, string key,
  77. string val, string filePath);
  78. [DllImport("kernel32")]//返回取得字符串缓冲区的长度
  79. private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
  80. #endregion
  81. #region 读Ini文件
  82. /// <summary>
  83. /// 读Ini文件
  84. /// </summary>
  85. /// <param name="section">section</param>
  86. /// <param name="key">key</param>
  87. /// <returns></returns>
  88. public string ReadIniData(string section, string key)
  89. {
  90. if (File.Exists(_iniFilePath))
  91. {
  92. // 每次从ini中读取多少字节
  93. StringBuilder temp = new StringBuilder(2048);
  94. // section=配置节,key=键名,temp=上面,path=路径
  95. GetPrivateProfileString(section, key, "", temp, 2048, _iniFilePath);
  96. return temp.ToString().Trim();
  97. }
  98. else
  99. {
  100. return string.Empty;
  101. }
  102. }
  103. public static string ReadIniData(string iniFile, string section, string key)
  104. {
  105. if (File.Exists(iniFile))
  106. {
  107. // 每次从ini中读取多少字节
  108. StringBuilder temp = new StringBuilder(2048);
  109. // section=配置节,key=键名,temp=上面,path=路径
  110. GetPrivateProfileString(section, key, "", temp, 2048, iniFile);
  111. return temp.ToString().Trim();
  112. }
  113. else
  114. {
  115. return string.Empty;
  116. }
  117. }
  118. #endregion
  119. #region 写Ini文件
  120. /// <summary>
  121. /// 写Ini文件
  122. /// </summary>
  123. /// <param name="Section"></param>
  124. /// <param name="Key"></param>
  125. /// <param name="Value"></param>
  126. /// <returns></returns>
  127. public bool WriteIniData(string Section, string Key, string Value)
  128. {
  129. //if (File.Exists(_iniFilePath))
  130. {
  131. long OpStation = WritePrivateProfileString(Section, Key, Value, _iniFilePath);
  132. if (OpStation == 0)
  133. {
  134. return false;
  135. }
  136. else
  137. {
  138. return true;
  139. }
  140. }
  141. //else
  142. //{
  143. // return false;
  144. //}
  145. }
  146. #endregion
  147. }
  148. }