INI格式文件操作
晚上忙着忙着,不知道自己在忙些啥,看看这看看那的,新进一家公司,做的东西,以前都没有接触过的,上班的时候需要用到INI文件来记录一些信息。我这个呢是没有加密的,当然加一个加密的,或者转成字节都可以,这样子就安全点。随便整理下这些老生常谈的东西,博客园也有例子。具体网址我不记得了,上班的时候看的。贴点代码,更新下博客。
下面是INIFileHepler类
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="section">节点名称[如[TypeName]]</param>
/// <param name="key">键</param>
/// <param name="val">值</param>
/// <param name="filepath">文件路径</param>
/// <returns></returns>
[DllImport("kernel32")]
public 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")]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
记得导入命名空间:
using System.Runtime.InteropServices; |
然后是操作类FileManage
public class FileManage
{
public FileManage(string path)
{
strFilePath = path;
}
private string strSec = ""; //INI文件名
private string strFilePath;
/// <summary>
/// 写入
/// </summary>
/// <param name="key">写入key</param>
/// <param name="value">写入value</param>
public void Write(string key, string value)
{
try
{
//根据INI文件名设置要写入INI文件的节点名称
//此处的节点名称完全可以根据实际需要进行配置
strSec = Path.GetFileNameWithoutExtension(strFilePath);
INIFileHepler.WritePrivateProfileString(strSec, key, value, strFilePath);
}
catch
{
throw new Exception("配置文件不存在或权限不足导致无法写入");
}
}
/// <summary>
/// 读取
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string Read(string key)
{
if (File.Exists(strFilePath))//读取时先要判读INI文件是否存在
{
strSec = Path.GetFileNameWithoutExtension(strFilePath);
return ContentValue(strSec, key);
}
else
{
throw new Exception("配置文件不存在");
}
}
/// <summary>
/// 自定义读取INI文件中的内容方法
/// </summary>
/// <param name="Section">键</param>
/// <param name="key">值</param>
/// <returns></returns>
private string ContentValue(string Section, string key)
{
StringBuilder temp = new StringBuilder(1024);
INIFileHepler.GetPrivateProfileString(Section, key, "", temp, 1024, strFilePath);
return temp.ToString();
}
}
有这些最后就是调用的问题啦。。
private string strFilePath = Application.StartupPath + "\\FileConfig.ini";//获取INI文件路径
//写入
private void button1_Click(object sender, EventArgs e)
{
FileManage file = new FileManage(strFilePath);
file.Write(label1.Text, textBox1.Text);
file.Write(label2.Text, textBox2.Text);
MessageBox.Show("写入完毕");
}
//读取
private void button2_Click(object sender, EventArgs e)
{
FileManage file = new FileManage(strFilePath);
StringBuilder str = new StringBuilder();
str.AppendLine(file.Read(label1.Text));
str.AppendLine(file.Read(label2.Text));
MessageBox.Show(str.ToString());
}
看看运行效果:
很简单的小玩意。。但是作用也很大。。比如自动登录功能,记录配置信息啥的。。挺方便的。。当然这个也可以选择xml来记录的。。这个东西看个人喜好了。
夜深了。。又是一夜。。明天继续折腾。
______________________________________________________________________________
源码:
INI文件操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述