C# 读取和配置IniFile
自定义IniFile操作类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO; namespace Sisley
{
public class INIFileHepler
{ private string Default_IniFileName = "Config.ini"; //INI文件名
private string strIniFilePath; // 返回0表示失败,非0为成功
[DllImport("kernel32", CharSet = CharSet.Auto)]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); // 返回取得字符串缓冲区的长度
[DllImport("kernel32", CharSet = CharSet.Auto)]
private static extern long GetPrivateProfileString(string section, string key, string strDefault, StringBuilder retVal, int size, string filePath);
/*
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetPrivateProfileInt(string section, string key, int nDefault, string filePath);
*/ public INIFileHepler()
{
this.strIniFilePath = Directory.GetCurrentDirectory() + "\\" +Default_IniFileName; } public INIFileHepler(string strIniFilePath)
{
if ( Directory.Exists(strIniFilePath))
{
this.strIniFilePath = Directory.GetCurrentDirectory() + "\\" + Default_IniFileName; } this.strIniFilePath = strIniFilePath;
} /// <summary>
/// 写入
/// </summary>
/// <param name="section">写入section</param>
/// <param name="key">写入key</param>
/// <param name="value">写入value</param>
public void WriteIniString(string section, string key, string value)
{
try
{
WritePrivateProfileString(section, key, value, strIniFilePath);
}
catch
{
throw new Exception("配置文件不存在或权限不足导致无法写入");
} } /// <summary>
/// 获取ini配置文件中的字符串
/// </summary>
/// <param name="section">节名</param>
/// <param name="key">键名</param>
/// <param name="strDefault">默认值</param>
/// <param name="retVal">结果缓冲区</param>
/// <param name="size">结果缓冲区大小</param>
/// <returns>返回值</returns>
public string GetIniString(string section, string key, string strDefault, StringBuilder retVal, int size)
{
long liRet = GetPrivateProfileString(section, key, strDefault, retVal, size, strIniFilePath);
//return (liRet >= 1); StringBuilder temp = new StringBuilder();
INIFileHepler.GetPrivateProfileString(section, key, strDefault, temp, , strIniFilePath);
return temp.ToString();
} }
}
使用示例:
设置和设置
INIFileHepler inifile = new INIFileHepler();
//INIFileHepler inifile = new INIFileHepler(@"D:\MyDocs\CSharp\Program\bin\Debug\TestConfig.ini");
private void button1_Click(object sender, EventArgs e)
{ inifile.WriteIniString("DatabaseConfig", "Server", "192.168.10.3");
inifile.WriteIniString("DatabaseConfig", "DBName", "DB_Live");
inifile.WriteIniString("DatabaseConfig", "UserName", "admin");
inifile.WriteIniString("DatabaseConfig", "UserPassword", "");
} private void button2_Click(object sender, EventArgs e)
{ richTextBox1.AppendText("DatabaseConfig"+"\n");
StringBuilder Server = new StringBuilder();
StringBuilder DBName = new StringBuilder();
StringBuilder UserName = new StringBuilder();
StringBuilder UserPassword = new StringBuilder(); inifile.GetIniString("DatabaseConfig", "Server", "", Server, Server.Capacity); inifile.GetIniString("DatabaseConfig", "DBName", "", DBName, DBName.Capacity);
inifile.GetIniString("DatabaseConfig", "UserName", "", UserName, UserName.Capacity);
inifile.GetIniString("DatabaseConfig", "UserPassword", "", UserPassword, UserPassword.Capacity); richTextBox1.AppendText("Server: " +Server+ "\n");
richTextBox1.AppendText("DBName: " + DBName + "\n");
richTextBox1.AppendText("UserName: " + UserName + "\n");
richTextBox1.AppendText("UserPassword: " + UserPassword + "\n");
}
C# 读取和配置IniFile的更多相关文章
- springboot 读取 yml 配置的几种方式
前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...
- DOS下读取PCI配置空间信息的汇编程序(通过IOCF8/IOCFC)
汇编程序编写的读取PCI配置空间信息的代码(通过IOCF8/IOCFC): ;------------------------------------------------ ;功能: 读取PCI 配 ...
- Spring Boot 之注解@Component @ConfigurationProperties(prefix = "sms") 使用@ConfigurationProperties读取yml配置
从spring-boot开始,已经支持yml文件形式的配置,@ConfigurationProperties的大致作用就是通过它可以把properties或者yml配置直接转成对象 @Componen ...
- 每日笔记---使用@ConfigurationProperties读取yml配置
每日笔记---使用@ConfigurationProperties读取yml配置 参考地址 https://www.cnblogs.com/mycs-home/p/8352140.html 1.添加 ...
- python 读取consul配置
自动化通过rcp client调用远端服务接口时,都需要将远端测试服务ip.端口记录在配置文件. 但由于,服务发布或重启会导致ip.端口变动. 以下将通过python-consul 自动去读取cons ...
- Springboot(二)-application.yml默认的配置项以及读取自定义配置
写在前面 ===== spring-boot 版本:2.0.0.RELEASE ===== 读取自定义配置 1.配置文件:sys.properties supply.place=云南 supply.c ...
- c++读取lua配置基础类
一.内容介绍 把lua作为配置文件,里面的参数值的获取,在他人基础上做了修改,并且补充了一维数组的处理方式. 若有不足之处请多多指教. 对于二维数组,没有成功.希望大家继续补充和修改,非常感谢! 二. ...
- golang 读取 ini配置信息
package main //BY: 29295842@qq.com//这个有一定问题 如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost ...
- 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式
表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...
随机推荐
- ZOJ 3911 线段树
题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...
- java异步式Socket响应数据获取方案
项目中存在 云中央控制器需要使用多个Socket连接多个云终端控制器的需求. 由于终端数量大,就对整个中央控制器提出了并发的要求,然而获取Socket响应的过程是一个持续阻塞的过程,存在性能风险.而常 ...
- 探究toString()和valueOf()
1.用法如下:toString()方法:返回对象的字符串表示. 对象 操作 Array 将 Array 的元素转换为字符串.结果字符串由逗号分隔,且连接起来. Boolean 如果 Boolean 值 ...
- List转MVC DropDownListFor(SelectList)
/// <summary> /// List转SelectListItem /// </summary> /// <typeparam name="T" ...
- .net 如何引用迅雷组件
本文记录两个部分,本人自己引用迅雷组件的经历和引用迅雷组件相关原理 the first: 添加引用 -> COM -> ThunderAgent 1.0 Type Library(前提是已 ...
- pysproto bug修复
最近,找隔壁组的同学测试了一下我的pysproto,他们提了很多有益的建议,非常感谢. 在测试中,出现了一次诡异的coredump.当数据变大的时候,就有很大的机率遇上double free.在spr ...
- 关于raid的理解
缘起 公司部署业务的时候,6块盘需要做raid,以前还没有用过所以不知道,临时才去百度看了一下相关知识. 部署 当前可以用软raid与硬raid,软raid系统上建立,占用CPU与IO资源;硬RAID ...
- Spike Notes on Theory of (Software) Transactional Memory[Doing]
Motivation 程序员是否需要在处理一致性问题或者同步时,一定要make hands dirty?能不能专注于应用级原子性,而无需考虑低层操作系统.运行时支持的原子性概念或者语言构造? 软件事务 ...
- LintCode Subarray Sum
For this problem we need to learn a new trick that if your start sum up all elements in an array. Wh ...
- js跳转传递参数
额,利用j获取了GridView中选中行数据后,通过JavaScript做跳转,传递参数的时候发现,当参数有中文的时候就会乱码, 当然出现这种情况的时候就需要对跳转的url进行编码 var urlX ...