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 的相关文章

  • Unity-赛车Demo

    using UnityEngine using System Collections public class CarDrive MonoBehaviour public WheelCollider wheelColLF public Wh
  • Android Studio 的NotePad制作(日志本)

    自己写的NotePad 一个星期左右的时间 完成了最基本的功能 但是 界面还是一如既往的shi 因为百度找的图标都不是那种成套的 想找的找不到 干脆下次自己画 NotePad的功能无非是对日志的增删改查 这次还加入了Preference的一
  • 海康摄像头视频调用出错,Jni Error(app bug): accessed stale local reference解决办法

    项目中要在Android手机中调用海康摄像头拍摄的画面 在公司网管配置好了网络地址 不要与其他局域网内地址冲突 和端口 并激活摄像头设备后 通过SADPTool 海康提供的摄像头搜索工具 可以自动检索到当前局域网内已激活的设备 通过设备列表
  • FreeRTOS学习笔记-2-FreeRTOSConfig.h

    http www freertos org a00110 html 边看边试着翻译了下 发现看懂是一回事 写成文字表达出来又是另一个层次了 何况还有很多看不懂的 以后有机会 一点一点的补上去吧 lt gt gt gt FreeRTOS 的配
  • Wix修改现有的ini文件

    我试图在 Wix 中修改 ini 文件 如果它不存在 则 msi 不会完成 我该如何检查这个 我真的很想修改它 是的 我查看了其他 stackoverflow 问题 答案以及 google 我正在尝试这个
  • 如何使用 zend 框架读取控制器上的 application.ini

    我的 application ini 中有这些行 我怎样才能阅读user在我的控制器中 resources doctrine dbal connections default parameters driver pdo mysql reso
  • 解析 .ini 文件

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

    我需要从 INI 文件加载这些值并使用 C Boost 库在应用程序中打印它们 这些部分具有重复的名称 我被限制只能使用 C Boost 库 numColors 4 boardSize 11 numSnails 2 initializati
  • TIniFile.WriteBinaryStream 创建异常

    在Delphi 10 4中 我尝试保存一个有效的TPictureBase64 编码为 INI 文件 procedure TForm1 SavePictureToIniFile const APicture TPicture var LInp
  • 显示多个 Google 路线的演示 (Google Maps API v3)

    大家好 有没有一个可以在单个 Google 地图上显示多个方向路线的功能演示 堆栈上的另一个问题 https stackoverflow com questions 3537676 google maps directions v3 mul
  • SurfaceView示例代码

    我需要 Android 的示例教程SurfaceView 或者使用它的可以共享的示例代码 API 演示对我来说很难理解 有人有替代方案吗 这次提交 https github com johnnylambada WorldMap commit
  • 如何使用 Zend_Config_Writer_Ini 保留 application.ini 路径

    我目前正在 Phing 中开发一个构建系统 该系统采用 Zend Framework 项目模板并根据 Phing 参数对其进行配置 我遇到的一个问题是使用 Zend Config Writer Ini 时 我的 Phing 任务从存储库中获
  • INI 文件 - 通过 VBS 中的键名检索节名

    我想从 INI 文件中检索仅具有唯一键名称的部分名称 我的ini文件 Area 104 Title Central North America Local Scenery NAMC Layer 104 Active TRUE Require
  • PHP ini file_get_contents 外部 url

    我使用以下 PHP 函数 file get contents http example com 每当我在某个服务器上执行此操作时 结果都是空的 当我在其他地方执行此操作时 结果就是页面的内容是什么 然而 当我在结果为空的服务器上 在本地使用
  • 使用shell脚本修改ini文件

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

    我有一个需要输入文件名的 vbscript 代码是 Dim tsout Set tsout gofs CreateTextFile C csv Dim tsin Set tsin gofs OpenTextFile C csv 我该如何配置
  • php 中 ini_set() 的用途是什么? (特别是错误报告)

    好的 PHP 有这个功能ini set 很多人都知道并会使用它来设置各种配置选项 here http php net manual en ini list php 来帮助开发等 但是 这个函数似乎只在运行时起作用 如果存在任何致命错误或脚本
  • ConfigParser 从 INI 文件中获取值,如下所示

    我有以下类型的 INI 文件 section1 subsection1 port 989 section1 subsection2 somethign somethign 我正在使用 Python 的 ConfigParser 来解析 IN
  • php 中 php.ini 的 log_errors 和 error_log

    我正在尝试通过 php ini 更改 php ini 中的设置 我的问题是 当出现错误时 它不会放入文件 error log txt 中 那么我做错了什么 这是我的代码 Settings for php ini ini set sessio
  • delphi检查ini文件是否存在

    如何检查 INI 文件是否存在 在特定路径和特定名称下 比如这样 if FileExists c yourinifile ini then ShowMessage c yourinifile ini exists

随机推荐

  • 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 组成 在每个带括号的标题下