C#操作ini文件
C#创建ini文件、读取值、修改值
调用方法:
int iBaudRate = InIHelper.ReadConfig<int>("COM_SETUP", "波特率")
InIHelper类:
1 public class InIHelper 2 { 3 private static string FileName = Application.StartupPath + "\\AppConfig.ini"; 4 /// <summary> 5 /// 读取配置文件 6 /// </summary> 7 /// <typeparam name="T"></typeparam> 8 /// <param name="section"></param> 9 /// <param name="key"></param> 10 /// <returns></returns> 11 public static T ReadConfig<T>(string section, string key) 12 { 13 if (File.Exists(FileName)) 14 { 15 IniFile f = new IniFile(FileName); 16 string value = f.ReadContentValue(section, key); 17 18 if (String.IsNullOrWhiteSpace(value)) 19 return default(T); 20 21 if (typeof(T).IsEnum) 22 return (T)Enum.Parse(typeof(T), value, true); 23 24 return (T)Convert.ChangeType(value, typeof(T)); 25 } 26 else 27 { 28 return default(T); 29 } 30 } 31 32 /// <summary> 33 /// 写配置文件 34 /// </summary> 35 /// <param name="section"></param> 36 /// <param name="key"></param> 37 /// <param name="value"></param> 38 public static void WriteConfig(string section, string key, string value) 39 { 40 //如果文件不存在,则创建 41 if (!File.Exists(FileName)) 42 { 43 using (FileStream myFs = new FileStream(FileName, FileMode.Create)) { } 44 } 45 46 IniFile f = new IniFile(FileName); 47 f.WriteContentValue(section, key, value); 48 } 49 }
核心代码:
public class IniFile { public string Path; public IniFile(string path) { this.Path = path; } /// <summary> /// 写入INI文件 /// </summary> /// <param name="section">节点名称[如[TypeName]]</param> /// <param name="key">键</param> /// <param name="val">值</param> /// <param name="filepath">文件路径</param> /// <returns></returns> [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filepath); /// <summary> /// 读取INI文件 /// </summary> /// <param name="section">节点名称</param> /// <param name="key">键</param> /// <param name="def">值</param> /// <param name="retval">stringbulider对象</param> /// <param name="size">字节大小</param> /// <param name="filePath">文件路径</param> /// <returns></returns> [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath); /// <summary> /// 写入 /// </summary> /// <param name="section"></param> /// <param name="key"></param> /// <param name="iValue"></param> public void WriteContentValue(string section, string key, string iValue) { WritePrivateProfileString(section, key, iValue, this.Path); } /// <summary> /// 读取INI文件中的内容方法 /// </summary> /// <param name="Section">键</param> /// <param name="key">值</param> /// <returns></returns> public string ReadContentValue(string Section, string key) { StringBuilder temp = new StringBuilder(1024); GetPrivateProfileString(Section, key, "", temp, 1024, this.Path); return temp.ToString(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现