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();}}
}

结果如下:

C# 读写Ini文件相关推荐

  1. VC中读写ini文件

    我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAP ...

  2. vbs脚本读写INI文件

    vbs脚本读写INI文件 转载于:https://www.cnblogs.com/bull_think/archive/2012/08/21/2649838.html

  3. C#学习笔记——读写ini文件

    1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: ...

  4. C#关于读写INI文件

    C#关于读写INI文件 什么是ini文件就是一个配置文件,一般把数据库等配置信息放进去,然而,改变数据库的密码,数据库名称,ip等,不要改源码重新编译,只需要用记事本打开set.ini 文件,修改保存 ...

  5. 在 WinCe 平台读写 ini 文件

    在上篇文章开发 windows mobile 上的今日插件时,我发现 wince 平台上不支持例如 GetPrivateProfileString 等相关 API 函数.在网络上我并没有找到令我满意的 ...

  6. 十、封装python3读写ini文件类

    自己编写封装的python3读写ini文件类. main.py # -*- coding: utf-8 -*- import os import configparserclass OperateIn ...

  7. 在.NET中读写INI文件 ——兼谈正则表达式的应用

    INI文件是Windows平台上的一种较常用的软件配置文件格式,Windows应用程序常常使用它来保存一些配置信息.它一般是由数个包含key-value对的Section组成,每个key-value对 ...

  8. 转:c++builder读写INI文件

    转:c++builder读写INI文件 //包含文件 #include <inifiles.hpp> //写文件 TIniFile *ini; ini=new TIniFile(Chang ...

  9. (vc)分享一个读写ini文件的类,支持多种数据类型的读写,二进制数据都能保存和读取...

    读写ini文件的类叫CIni,有ini.h和ini.cpp两个文件组成.     ini.h文件: #pragma once#define SER_GET(bGet,value) SerGet(bGe ...

最新文章

  1. Nmap帮助文档解释
  2. 一起谈.NET技术,Visual Studio 2010 中的代码约定设置
  3. Intel Realsense 如何获取已连接所有摄像头的序列号参数?context() query_devices() size() camera_info device_list
  4. 笔记-项目立项管理-项目的可行性研究-可行性研究内容
  5. Spring Cache
  6. Unable to simultaneously satisfy constraints.
  7. 千亿级市场赛道,阿里云视频云拿下 “三连冠”
  8. 【毕业前夕,畅谈科研】一个清华土著的科研感想
  9. 网页文字无法免费复制的几种解决方法
  10. git 简单使用 基本操作
  11. linux中删除mysql用户_linux系统下mysql添加用户、删除用户、授权、修改密码等sql命令使用...
  12. searchIndexer.exe占用过高CPU
  13. 生产者 消费者模式
  14. 传统和互联网门禁系统的创新应用和价值探讨
  15. java发送电子邮件
  16. Keil MDK5工程文件不可修改(文件符号上带一个黄色的钥匙)
  17. 利用YAKE进行文档关键词提取
  18. JAVA 北京大学GPA计算转换
  19. pytest执行用例报“Skipped: no variables file“跳过执行case问题解决
  20. TabLayout的属性介绍

热门文章

  1. QT练习9 Dialog学习
  2. 2.6. PostgreSQL表之间连接
  3. ASP.NET 连接MySql数据库
  4. linq中的castT()及OfTypeT()
  5. 程序员求职之道(《程序员面试笔试宝典》)之学业与求职,孰轻孰重?
  6. NHibernate学习笔记(二):one-to-one关系映射
  7. mac自带邮箱导出邮件_如何将电子邮件从Mac Mail导出到Notes应用程序
  8. 在Windows Media Center中收听超过100,000个广播电台
  9. 唤醒计算机运行此任务_如何停止Windows 8唤醒计算机以运行维护
  10. java获取前端json数据_java如何获取前端ajax传来的json对象