首页 > 编程 > C# > 正文

C#实现利用Windows API读写INI文件的方法

2019-10-29 21:41:09
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#实现利用Windows API读写INI文件的方法,涉及C#针对ini文件的创建、读取及写入等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#实现利用Windows API读写INI文件的方法。分享给大家供大家参考。具体如下:

写入时,如果没有INI文件,自动创建INI

如果在创建时,GetLastError:5 检查IniPath是否添加了文件名称.ini

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Text; 
  4. using System.IO; 
  5. using System.Runtime.InteropServices; 
  6. namespace NameSpace 
  7. /// <summary> 
  8. /// 利用Windows API读写INI文件 
  9. /// 写入时,如果没有INI文件,自动创建INI 
  10. /// 如果在创建时,GetLastError:5 检查IniPath是否添加了文件名称.ini 
  11. /// </summary> 
  12. public class INI 
  13. //声明kernel32.dll函数 
  14. [DllImport("kernel32")] 
  15. private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); 
  16. [DllImport("kernel32")] 
  17. private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); 
  18. // 
  19. [DllImport("kernel32")] 
  20. public static extern uint GetLastError(); 
  21. string IniPath = null
  22. /// <summary> 
  23. /// 构造方法 
  24. /// </summary> 
  25. /// <param name="INIPath">INI文件的绝对路径,后面不需要斜杠</param> 
  26. /// <param name="INIFileName">INI文件名称使用时不需要斜杠,需要.ini</param> 
  27. public INI(string INIPath,string INIFileName) 
  28. Console.WriteLine("INI Object building"); 
  29. IniPath = INIPath + "//" + INIFileName; 
  30. Console.WriteLine("INIFilePath :" + IniPath); 
  31. /// <summary> 
  32. /// 写入INI文件 
  33. /// </summary> 
  34. /// <param name="Section">Section</param> 
  35. /// <param name="Key">Key</param> 
  36. /// <param name="Value">Value</param> 
  37. public void IniWriteValue(string Section, string Key, string Value) 
  38. Console.WriteLine("---IniWriteValue---"); 
  39. Console.WriteLine("Section :" + Section); 
  40. Console.WriteLine("Key :" + Key); 
  41. Console.WriteLine("Value :" + Value); 
  42. Console.WriteLine("IniPath :" + IniPath); 
  43. UInt32 Snapshot = GetLastError(); 
  44. // 
  45. WritePrivateProfileString(Section, Key, Value, IniPath); 
  46. if (Snapshot != GetLastError()) 
  47. Console.WriteLine("GetLastError :" + GetLastError()); 
  48. /// <summary> 
  49. /// 读出INI文件 
  50. /// </summary> 
  51. /// <param name="Section">Section</param> 
  52. /// <param name="Key">Key</param> 
  53. public string IniReadValue(string Section, string Key) 
  54. StringBuilder result = new StringBuilder(256); 
  55. GetPrivateProfileString(Section, Key, null, result, 256, IniPath); 
  56. return result.ToString(); 
  57. public bool ExistINIFile() 
  58. return File.Exists(IniPath); 
  59. /// <summary> 
  60. /// creat config file to application ini 
  61. /// </summary> 
  62. /// <param name="dnf_path"></param> 
  63. public void CreateConfig(string IP) 
  64. Console.WriteLine("CreateConfig"); 
  65. Console.WriteLine("IP:" + IP); 
  66. try 
  67. WriteConfigIP(IP); 
  68. if (ExistINIFile()) 
  69. Console.WriteLine("配置文件创建成功"); 
  70. else 
  71. Console.WriteLine("配置文件创建不成功"); 
  72. catch (Exception err) 
  73. Console.WriteLine("出错信息:" + err.ToString()); 
  74. /// <summary> 
  75. /// write config for ip information 
  76. /// </summary> 
  77. /// <param name="IP"></param> 
  78. public void WriteConfigIP(string IP) 
  79. string Section = "Config"
  80. string Key = "IP"
  81. string Value = IP; 
  82. try 
  83. IniWriteValue(Section, Key, Value); 
  84. catch (Exception err) 
  85. Console.WriteLine("出错信息:" + err.ToString()); 
  86. public string ReadConfigIP() 
  87. try 
  88. string Section = "Config"
  89. string result = IniReadValue(Section, "IP"); 
  90. Console.WriteLine("ReadConfigIP Result :" + result); 
  91. return result; 
  92. catch (Exception err) 
  93. Console.WriteLine("出错信息:" + err.ToString()); 
  94. return "Read Error"

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表