INIFile.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4. namespace Masuit.Tools.Files
  5. {
  6. /// <summary>
  7. /// INI文件操作辅助类
  8. /// </summary>
  9. public class INIFile
  10. {
  11. /// <summary>
  12. /// 文件路径
  13. /// </summary>
  14. public readonly string path;
  15. /// <summary>
  16. /// 传入INI文件路径构造对象
  17. /// </summary>
  18. /// <param name="iniPath">INI文件路径</param>
  19. public INIFile(string iniPath)
  20. {
  21. path = iniPath;
  22. }
  23. [DllImport("kernel32")]
  24. private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
  25. [DllImport("kernel32")]
  26. private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
  27. [DllImport("kernel32")]
  28. private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
  29. /// <summary>
  30. /// 写INI文件
  31. /// </summary>
  32. /// <param name="section">分组节点</param>
  33. /// <param name="key">关键字</param>
  34. /// <param name="value">值</param>
  35. public void IniWriteValue(string section, string key, string value)
  36. {
  37. WritePrivateProfileString(section, key, value, path);
  38. }
  39. /// <summary>
  40. /// 读取INI文件
  41. /// </summary>
  42. /// <param name="section">分组节点</param>
  43. /// <param name="key">关键字</param>
  44. /// <returns>值</returns>
  45. public string IniReadValue(string section, string key)
  46. {
  47. StringBuilder temp = new StringBuilder(255);
  48. int i = GetPrivateProfileString(section, key, "", temp, 255, path);
  49. return temp.ToString();
  50. }
  51. /// <summary>
  52. /// 读取INI文件
  53. /// </summary>
  54. /// <param name="section">分组节点</param>
  55. /// <param name="key">关键字</param>
  56. /// <returns>值的字节表现形式</returns>
  57. public byte[] IniReadValues(string section, string key)
  58. {
  59. byte[] temp = new byte[255];
  60. int i = GetPrivateProfileString(section, key, "", temp, 255, path);
  61. return temp;
  62. }
  63. /// <summary>
  64. /// 删除ini文件下所有段落
  65. /// </summary>
  66. public void ClearAllSection()
  67. {
  68. IniWriteValue(null, null, null);
  69. }
  70. /// <summary>
  71. /// 删除ini文件下指定段落下的所有键
  72. /// </summary>
  73. /// <param name="section">分组节点</param>
  74. public void ClearSection(string section)
  75. {
  76. IniWriteValue(section, null, null);
  77. }
  78. }
  79. }