C# 读写Ini文件

     ini文件在Win95以前比较盛行,之后由于出册表等技术的出现,ini技术主键退居二线,不过对于一些小项目,读写ini文件还是很适用的。

       Windows API提供了读写配置文件的操作,在C#程序中只要导入相应的API即可。例如GetPrivateProfileString()方法,在MSDN查得原型如下:

DWORD GetPrivateProfileString(LPCTSTR lpAppName,        // p nameLPCTSTR lpKeyName,        // key nameLPCTSTR lpDefault,        // default stringLPTSTR lpReturnedString,  // destination bufferDWORD nSize,              // size of destination bufferLPCTSTR lpFileName        // initialization file name
);

 由于C#和C++数据类型不同,在导入win32 API时需要做相应的转换,并且要导入相关的类。如下所示:

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

 同理导入另一个函数

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

 在main函数测试如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;namespace DoingIni
{class Program{[DllImport("kernel32")]private static extern int GetPrivateProfileString(string p, string key, string defVal, StringBuilder retVal, int size, string filePath);[DllImport("kernel32")]private static extern long WritePrivateProfileString(string p, string key, string val, string filePath);/// <summary>    /// 读取INI文件    /// </summary>    /// <param name="p">项目名称(如 [p] )</param>    /// <param name="skey">键</param>   /// <param name="path">路径</param> static string IniReadValue(string p, string skey, string path){StringBuilder temp = new StringBuilder(500);int i = GetPrivateProfileString(p, skey, "", temp, 500, path);return temp.ToString();}/// <summary>/// 写入ini文件/// </summary>/// <param name="p">项目名称</param>/// <param name="key">键</param>/// <param name="value">值</param>/// <param name="path">路径</param>static  void IniWrite(string p, string key, string value, string path){WritePrivateProfileString(p, key, value, path);}static void Main(string[] args){IniWrite("上海", "东方明珠", "浦东新区", "f:/test.ini");IniWrite("上海", "上海中心大厦", "浦东新区", "f:/test.ini");IniWrite("湖南", "张家界景区", "张家界", "f:/test.ini");IniWrite("湖南", "凤凰古城", "吉首", "f:/test.ini");IniWrite("湖北", "武当山", "十堰", "f:/test.ini");IniWrite("湖北", "黄鹤楼", "武昌", "f:/test.ini");IniWrite("湖北", "古隆中", "襄阳", "f:/test.ini");IniWrite("江苏", "瘦西湖", "扬州", "f:/test.ini");IniWrite("江苏", "中山陵", "南京", "f:/test.ini");IniWrite("上海", "城隍庙", "浦东新区", "f:/test.ini");string str = IniReadValue("湖南", "凤凰古城", "f:/test.ini");Console.WriteLine(str);IniReadValue("上海", null, "f:/test.ini");删除test.ini文件中A 段落中所有键(没有键,也就没有值了)//IniWrite("A", null, null, "f:/test.ini");删除test.ini文件中所有段落//IniWrite(null, null, null, "f:/test.ini");Console.ReadKey();}}
}

结果如下:

   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更改windows2003远程最大连接数

windows 2003中的远程桌面功能非常方便&#xff0c;但是初始设置只允许2个用户同时登陆。有些时候因为我在公司连接登陆后断开&#xff0c;同事在家里用其他用户登陆后断开&#xff0c;当我再进行连接的时候&#xff0c;总是报错终端服务超过最大连接数。这时候我和同事都不能登…

mysql sp who_对ASE系统存储过程的剖析-sp_who

昨晚有空&#xff0c;把 sybase 系统过程 sp_who &#xff0c; DDL 后分析了一下&#xff0c;全文如下&#xff1a;-- 以下是 DDL 出来的内容&#xff1a;------------------------------------------------------------------------------- DDL for Stored procedure sybsyste…

区块链、自动驾驶、人工智能鏖战开始 谁将成为下一个风口?

近年来&#xff0c;区块链、自动驾驶以及人工智能的概念频繁爆红于科技界。有业者称&#xff0c;区块链的颠覆在于人们找到了一个低成本解决信任问题的方案&#xff1b;自动驾驶的出现方便了人们的交通出行&#xff1b;人工智能则为我们打开了新的世界。不论是区块链、自动驾驶…

JWT 介绍 - Step by Step

翻译自 Mohamad Lawand 2021年3月11日的文章 《Intro to JWT - Step by Step》 [1]在本文中&#xff0c;我将向您介绍 JWT[2]。我们今天要讲的内容包含&#xff1a;JWT 是什么我们应该在什么时候使用它JWT 与 Session Id 比较JWT 结构JWT 签名JWT 是什么JWT (JSON Web Token) 是…

Helpdesk 流程

最近Fox的公司部署了新的Helpdesk系统。为了让用户从原来打电话和发邮件寻求IT员工帮助的方式转变为使用Helpdesk系统提交tickets&#xff0c;需要制定和规范Helpdesk流程&#xff0c;小小推动下ITIL进程。 HelpDesk系统与AD集成。公司用户可以使用域用户名和密码登陆Helpdesk系…

vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...

本篇文章介绍 vim 的一些使用技巧&#xff1a;在程序代码中快速跳转在文件内跳转到变量定义处在程序代码中快速跳转在 vim 中查看代码文件时&#xff0c;可以使用下面命令在程序代码中快速跳转&#xff0c;提高效率。%跳转到光标所在括号的另一个配对括号上&#xff0c;适用于小…

震撼!英伟达用深度学习做图像修复,毫无ps痕迹

在计算机视觉研究领域&#xff0c;NVIDIA常常让人眼前一亮。比如“用Progressive Growing的方式训练 GAN&#xff0c;生成超逼真高清图像”&#xff0c;“用条件 GAN 进行 2048x1024 分辨率的图像合成和处理”的pix2pixHD项目&#xff0c;或者脑洞大开的让晴天下大雨、小猫变狮…

程序员过关斩将--重复的请求并不好过滤

为什么要做重复请求的过滤呢&#xff1f;不过滤不行吗&#xff1f;过滤重复请求很难吗&#xff1f;加一个请求ID不就好了吗&#xff1f;每个技术难点的话题&#xff0c;肯定是由一个产品需求引发的&#xff0c;俗话说&#xff1a;如果没有产品经理&#xff0c;程序员将不需要听…

php与java安全之争

很多人说java比php安全&#xff0c;其实这个说法很多人误解&#xff0c;其实安全在于程序的逻辑&#xff0c;代码的严谨&#xff0c;另外就是服务器设置的安全&#xff0c;关于java比php的安全一说&#xff0c;我不同意&#xff0c;java编译的话&#xff0c;现在可以反编译&…

python编译安装没有c扩展_为什么在安装simplejson时得到“C扩展无法编译”?

顺便问一下&#xff0c;我使用的是windows&#xff0c;所以我必须安装visual studio吗&#xff1f;(py) D:\python>pip install simplejsonDownloading/unpacking simplejsonDownloading simplejson-2.6.2.tar.gz (53kB): 53kB downloadedRunning setup.py egg_info for pac…

.NET团队送给.NET开发人员的云原生学习资源

企业正在迅速采用云的功能来满足用户需求&#xff0c;提高应用程序的可伸缩性和可用性。要完全拥抱云并优化节约成本&#xff0c;就需要在设计应用程序时考虑到云的环境&#xff0c;也就是要用云原生的应用开发方法。这意味着不仅要更改应用程序的构建方式&#xff0c;还要更改…

深夜,学妹说她想做Python数据分析师

大家好&#xff0c;我是大鹏&#xff0c;目前是一名数据分析师。上周末晚上&#xff0c;我的学妹突然约我出来喝咖啡。想起学妹在学校就一直说想转行&#xff0c;最近在网上捣鼓自学数据分析软件有一小段时间了。我想她不是为了叙旧。果然来到咖啡店&#xff0c;她一屁股坐下来…

NFS

NFS(Network File System) NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS&#xff0c;用户和程序可以象访问本地文件一样访问远 端系统上的文件。 优点&#xff1a; 本地工作站使用更少的磁盘空间&#xff0c;因为通常的数据可以存放在一台机器上而且可以通过…

python面向对象继承_四. python面向对象(继承)

一. 继承class A:pass #父类 基类 超类class B:pass #父类 基类 超类class A_son(A,B): pass #子类 派生类class AB_son(A):pass #子类 派生类#一个类 可以被多个类继承#一个类可以继承多个父类print(A_son.__bases__) #查看类的继承__bases__ (, )print(AB_son.__bases__) #查…

在真实工作中的编程是怎么样的,与学校里有什么不同?

学校里每门编程语言课程都是上一点上不完的&#xff0c;实验课写的代码最长一两百行。 而在真实的工作环境中&#xff0c;程序员写代码是怎么样的&#xff1f;每天要啪啪啪手敲成千上万行代码嘛&#xff1f;和在学校学习时写代码有什么异同呢&#xff1f;/*说说我的经验*/刚进公…

聊一聊Docker与时区

前言 当我们把应用部署到容器里面之后&#xff0c;基本都会要和时间/时区打交道&#xff01;&#xff01;大部分的应用&#xff0c;多多少少都会有获取当前时间的操作&#xff0c;试想一下应用拿到的时间不对&#xff0c;那么业务极有可能会乱套&#xff0c;造成严重的损失。时…

百度竟然不是中国的

2019独角兽企业重金招聘Python工程师标准>>> 身份之谜—百度是中国公司吗&#xff1f; 虽然&#xff0c;Baidu在美国上市使用了“中国的Google”这么一个概念&#xff0c;说真的&#xff0c;我知道的Baidu和Google最大的共同点也许就是他们都是美资公司。Baidu公司…

tortoisegit图标消失_安装TortoiseGit 状态图标不能正常显示

如果你安装 TortoiseSVN 之后&#xff0c;功能使用正常&#xff0c;但是文件夹或文件左上角就是不显示图标&#xff0c;那么你可能1. 64bit 系统上装了 32bit 的 TortoiseSVN解决方法是&#xff0c;再安装 64bit 的 TortoiseSVN&#xff0c;两者可并行运行2. Windows Explorer …

好用的验证框架FluentValidation(上)

把数据错误扼杀在早期&#xff0c;那就是在数据的入口处&#xff0c;一般数据都是打包成一个实体的方式进传递&#xff0c;FluentValidation就以实体类为单位进行属性验证的集合。Install-Package FluentValidation下面看一个例子吧。实体类&#xff1a;public class Person {p…

4.WCF事务【Transaction】

契约&#xff1a; namespaceRhythmk.Contracts{ [ServiceContract(Namespace"http://wwww.wangkun.com")]publicinterfaceICalculate { [OperationContract] [TransactionFlow(TransactionFlowOption.Mandatory)]voidOperationTransaction(inti);/*TransactionFlow -…