C# 读写ini配置文件demo

2023-05-16

INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
INI文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:
[Section1]
    KeyWord1 = Value1
    KeyWord2 = Value2
    ...
[Section2]
    KeyWord3 = Value3
    KeyWord4 = Value4

C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.
我现在介绍的是系统处理INI的方法.
虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
C#声明INI文件的写操作函数WritePrivateProfileString():

[DllImport(  " kernel32 "  )]
   private   static   extern   long  WritePrivateProfileString (  string section , string  key ,  string  val 
,  string  filePath ) ;

参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。
C#申明INI文件的读操作函数GetPrivateProfileString():

[DllImport( " kernel32 " )]
  private   static   extern   int  GetPrivateProfileString (  string  section ,
   string  key ,  string  def , StringBuilder retVal ,
   int  size ,  string  filePath ) ;

参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。 

下面是一个读写INI文件的类:

public   class  INIClass
{
  public   string  inipath;
 [DllImport( " kernel32 " )]
  private   static   extern   long  WritePrivateProfileString( string  section, string  key, string  val, string  filePath);
 [DllImport( " kernel32 " )]
  private   static   extern   int  GetPrivateProfileString( string  section, string  key, string  def,StringBuilder retVal, int  size, string  filePath);
  ///   <summary>
  ///  构造方法
  ///   </summary>
  ///   <param name="INIPath"> 文件路径 </param>
  public  INIClass( string  INIPath)
 {
  inipath  =  INIPath;
 }
  ///   <summary>
  ///  写入INI文件
  ///   </summary>
  ///   <param name="Section"> 项目名称(如 [TypeName] ) </param>
  ///   <param name="Key"> 键 </param>
  ///   <param name="Value"> 值 </param>
  public   void  IniWriteValue( string  Section, string  Key, string  Value)
 {
  WritePrivateProfileString(Section,Key,Value, this .inipath);
 }
  ///   <summary>
  ///  读出INI文件
  ///   </summary>
  ///   <param name="Section"> 项目名称(如 [TypeName] ) </param>
  ///   <param name="Key"> 键 </param>
  public   string  IniReadValue( string  Section, string  Key)
 {
  StringBuilder temp  =   new  StringBuilder( 500 );
   int  i  =  GetPrivateProfileString(Section,Key, "" ,temp, 500 , this .inipath);
   return  temp.ToString();
 }
  ///   <summary>
  ///  验证文件是否存在
  ///   </summary>
  ///   <returns> 布尔值 </returns>
  public   bool  ExistINIFile()
 {
   return  File.Exists(inipath);
 }
}

 

C# 读写ini配置文件
1、新建类,引入命名空间 using System.Runtime.InteropServices;
2、声明API函数:

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

3、实现:写

/// <summary> 
/// 写入INI文件 
/// </summary> 
/// <param name="field">项目名称(如 [TypeName] )</param> 
/// <param name="Key">键</param> 
/// <param name="Value">值</param> 
public void GetValueOfKey(string field, string Key, string Value)
{
	WritePrivateProfileString(field, Key, Value, iniFilePath);
}

4、实现:读

/// <summary> 
/// 读出INI文件 
/// </summary> 
/// <param name="field">项目名称(如 [TypeName] )</param> 
/// <param name="Key">键</param> 
public string IniReadValue(string field, string Key)
{
	StringBuilder temp = new StringBuilder(500);
	int i = GetPrivateProfileString(field, Key, "", temp, 500, this.inipath);
	return temp.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 读写ini配置文件demo 的相关文章

  • Maven一定要会的这几个知识!

    一 Maven概念 Maven是一个项目管理和整合工具 Maven为开发者提供了一套完整的构建生命周期框架 开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置 因为Maven使用了一个标准的目录结构和一个默认的构建生命周期 若有多个
  • Android CheckBox 多选以及反选清除已选项

    前言 疫情随着这个春天的到来已悄然离去 你还记得填写问卷调查的那个时候么 话不多少 这篇文章要实现的就是一个问卷调查列表 即 Listview 嵌套 Listview 实现 checkbox 多选以及反选清除已选项 正文 思路就是定义一个
  • Spring Cloud获取本机IP地址

    最新的Spring Cloud获取本机的IP地址的配置文件如下 eureka instance hostname spring cloud client ip address lease renewal interval in second
  • 【经典】环境切换——SpringBoot配置不同环境启用不同的配置文件

    不同环境下切换数据库配置文件 环境切换配置一般在数据库 存储等需要在开发环境和正式环境中进行切换时 避免出错而常用的方式 以下内容以yml文件来举例 我们需要创建两个application文件 application dev yml app
  • nginx server.conf demo

    server access log Users xx software nginx logs access log error log Users xx software nginx logs error log listen 50001
  • 基于状态机的单个按键长按,短按实现复用

    开博第一文 希望再次记录学习的过程 按键扫描 单片机里面再基础不过的程序了 但对于初学者来说 用好按键也不是一件简单的事情 在毛老师的介绍下 第一次知道了状态机的思想也可以用于单片机的程序设计 感觉很是新奇 看了老师给发的几个文档后对状态机
  • 金字塔和 .ini 配置

    每个 Pyramid 应用程序都有一个关联的 ini 文件 其中包含其设置 例如 默认值可能如下所示 app main use egg MyProject pyramid reload templates true pyramid debu
  • PHP parse_ini_file 对 URL 起作用吗?

    PHP方法有吗解析ini文件处理托管在云中的 INI 文件 现在 我的每一个应用程序服务器中都有一个配置文件 在任何给定时间可能有 4 8 个 手动对每台服务器进行配置更改是非常痛苦的 我已尝试以下方法但无济于事 handle fopen
  • 解析 .ini 文件

    我的问题是关于使用 Windows 命令行解析 ini 文件 我在尝试从文件中删除包含所有键的部分时陷入困境 该部分的名称已知并保存在变量中 我尝试保存行 开始 结束 以删除之间的内容 但它对我不起作用 这里有人可以帮助我吗 edit 这是
  • PHP 警告:第 0 行的未知模块已加载

    在 Mac OSX Mavericks 上使用 homebrew php55 每当我运行 php 命令时 我都会收到以下错误消息 一切运行正常 只是很烦人 PHP Warning Module intl already loaded in
  • 如何使用 shell 脚本从文件中获取变量的值?

    有一个文件post check ini我需要为以下设置的值 Max value 2 我如何获得价值2 from Max value try grep Po lt Max value post check ini
  • boost::program_options - 如何处理 INI 文件中具有相同名称的多个部分

    在如下配置中 有没有办法处理各个部分 我正在寻找一种以可靠的方式验证下面各个 服务器 部分的方法 basic number of servers 3 server ip 10 20 30 40 password sdfslkhf serve
  • C++ boost 库 - 写入 ini 文件而不覆盖?

    我正在尝试使用 boost 库的 ini 解析器和属性树编写 ini 文件 该文件是分阶段写入的 我的意思是每个函数都会写入其中的一部分 最后 我只留下最后的输出 而不是写下所有内容 我在编写时使用的示例代码 property tree p
  • 致命错误:使用 phpexcel 写入 xlsx 文件时出现内存不足(已分配 1979711488)(尝试分配 131072 字节)错误

    我已经集成了 xlsx 文件 以便使用 phpexcel 从数据库写入 我想在 xlsx 文件中写入 3 00 000 条记录 但直到通过致命错误 内存不足 已分配 1979711488 尝试分配 131072 字节 我的 PHP 版本 5
  • 如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径

    我目前正在 Phing 中开发一个构建系统 该系统采用 Zend Framework 项目模板并根据 Phing 参数对其进行配置 我遇到的一个问题是使用 Zend Config Writer Ini 时 我的 Phing 任务从存储库中获
  • go 1.5 跟踪命令

    Go 1 5 发行说明说 新的 go tool trace 命令可以实现运行时中新跟踪基础设施生成的程序跟踪的可视化 这真的很令人兴奋 我想了解更多 但其官方文件位于https golang org cmd trace https gola
  • INI 文件 - 通过 VBS 中的键名检索节名

    我想从 INI 文件中检索仅具有唯一键名称的部分名称 我的ini文件 Area 104 Title Central North America Local Scenery NAMC Layer 104 Active TRUE Require
  • 使用shell脚本修改ini文件

    我有一个ini与此类似的文件 test foo bar 如果我们称之为ini文件为test1 ini 我如何改变的值foo to foobarbaz例如使用shell script 我已经尝试过以下方法 但它对我不起作用 我在 ini 文件
  • ConfigParser 从 INI 文件中获取值,如下所示

    我有以下类型的 INI 文件 section1 subsection1 port 989 section1 subsection2 somethign somethign 我正在使用 Python 的 ConfigParser 来解析 IN
  • 将 PHP 7 安装到我的服务器后,PHP 模块无法加载

    我将 PHP 7 安装到我的服务器上 因此 我没有 etc php5 和 etc php 7 0 当我运行我的网络应用程序时 我看不到任何以前的 CURL 或 fork 起初我收到这个错误消息 消息 调用未定义的函数curl init 安装

随机推荐

  • C语言中指针动态内存的申请和释放

    什么是动态内存的申请和释放 xff1f 当程序运行到需要一个动态变量时 xff0c 需要向系统的堆中申请一块内存 xff0c 用来存储这块变量 xff0c 这就是内存的申请 当程序不需要这个变量时 xff0c 就需要把申请的这块内存释放掉
  • Qt中线程使用汇总

    QThread类提供一种独立于平台的线程管理方式 方法1 一个QThread实例管理程序中的一个线程 QThread的执行开始于run 默认情况下 xff0c run 通过调用exec 启动事件循环 xff0c 并在线程内运行Qt事件循环
  • 对线程与进程的区别以及对多线程并发的理解

    一 线程与进程的区别 先简单说说线程与进程的概念 xff1a xff08 1 xff09 进程是指一个内存中运行的应用程序 xff0c 比如在Windows系统中 xff0c 一个运行的exe就是一个进程 xff08 2 xff09 线程是
  • 单片机学习经验总结

    单片机的学习是嵌入式中的裸机开发 xff0c 也就是不基于操作系统的开发过程 xff0c 你只要把自己学的程序下载到单片机内执行即可 xff08 这个过程有个专业术语 xff1a 烧写 xff09 在这个过程中 xff0c 你所写的程序 x
  • 三极管的工作原理(详细、通俗易懂、图文并茂)

    一 很多初学者都会认为三极管是两个 PN 结的简单凑合 xff08 如图1 xff09 这种想法是错误的 xff0c 两个二极管的组合不能形成一个三极管 我们以 NPN 型三极管为例 xff08 见图 2 xff09 xff0c 两个 PN
  • 三极管工作原理图解,快速了解三极管结构和工作原理

    了解三极管工作原理前 xff0c 先看一张三极管内部结构原理图 xff1b 从图中可以清晰的看出NPN和PNP内部结构的区别 三极管NPN型和PNP型的工作原理 xff1a NPN三极管 xff1a Vb lt Ve xff08 截止状态
  • C# 获取进程或线程的信息

    using System using System Collections Generic using System Linq using System Text using System Diagnostics namespace Con
  • C#图片保存与读取,以及图片另存操作

    照片的保存与读取 lt summary gt 图片转二进制 lt summary gt lt param name 61 34 imgPhoto 34 gt 图片对象 lt param gt lt returns gt 二进制 lt ret
  • C#异常解决:在调用OLE之前,必须将当前线程设置为单线程单单元(STA)模式。

    问题来源 xff1a 昨晚上在调试数据库大作业的时候 xff0c 我在注册界面Register里点击 34 上传头像 34 这个linklabel时 xff0c 程序出现了一个异常 xff1a 在调用OLE之前 xff0c 必须将当前线程设
  • Qt调用OpenCV汇总(1)

    1 在Qt Creator上新建一个项目 右键新项目 gt gt 添加库 gt gt 外部库 gt gt 选中库文件路径 gt gt 下一步 xff0c 完成 xff0c 添加到 pro文件中 然后再在pro文件中手动输入下面代码 xff1
  • qt调用opencv汇总(2)

    OpenCV3 4 3 43 Qt5 9 4 QtCreator 开发环境搭建 之前有过对OpenCV3 4 2 43 VS2015编译及环境搭建 xff0c 今天使用OpenCV3 4 3 43 QtCreator5 9 4编译及环境搭建
  • 关于QT下配置OpenCV3.4.0后出现 error: undefined reference to ‘cv::xxx‘的问题及解决方案,直接使用编译好的opencv库

    按照网上的办法 xff0c 在QT中pro文件末尾添加以下代码来引入OpenCV的库和头文件 xff1a INCLUDEPATH 43 61 D OpenCV3 4 opencv build mingw install x64 mingw
  • C#实现最小二乘法

    根据http zh wikipedia org wiki E6 9C 80 E5 B0 8F E4 BA 8C E4 B9 98 E6 B3 95里面的说法 xff1a 线性函数模型 典型的一类函数模型是线性函数模型 最简单的线性式是 xf
  • C++动态(显式)调用 C++ dll示例

    1 创建DLL新项目Dll1 xff0c Dll1 cpp 1 extern 34 C 34 declspec dllexport const char myfunc 2 3 return 34 hello 34 4 生成后 xff0c 将
  • 用quagga建立BGP会话

    本文将讲述使用quagga建立一个BGP会话 本次测试拓扑 假设运营商A与运营商B建立BGP对等互联来交换路由 下面是她们的AS号和IP地址范围 xff1a 运营商 A AS38372 xff0c IP段 172 16 0 0 16 xff
  • c++中堆、栈内存分配概念示例讲解

    首先来看看主要有几种程序内存分配 xff1a 一个由C C 43 43 编译程序占用内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数参数值 xff0c 局部变量值等 其操作方式类
  • winform窗体控件多,加载慢、卡顿的解决办法

    protected override CreateParams CreateParams get CreateParams cp 61 base CreateParams cp ExStyle 61 0x02000000 用双缓冲绘制窗口的
  • c# 中ToolStrip控件中button控件,显示文字和图标

    1 同时显示文字和图标 DisplayStyle 属性设为 ImageAndText DisplayStyle属性用来设置图标的显示状态为 图片 文字 图片和文字 ImageRelation 属性设为 ImageBeforeText Tex
  • C#中的线程池使用方法

    1 线程池的概念 许多应用程序使用多个线程 xff0c 但这些线程经常在休眠状态中耗费大量的时间来等待事件发生 其他线程可能进入休眠状态 xff0c 并且仅定期被唤醒以轮询更改或更新状态信息 xff0c 然后再次进入休眠状态 为了简化对这些
  • C# 读写ini配置文件demo

    INI就是扩展名为 34 INI 34 的文件 其实他本身是个文本文件 可以用记事本打工 主要存放的是用户所做的选择或系统的各种参数 INI文件其实并不是普通的文本文件 它有自己的结构 由若干段落 SECTION 组成 在每个带括号的标题下