迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
INI文件就是扩展名为"ini"的文件。 在Windows系统中,INI文件是很多,最重要的就是"System.ini"、"System32.ini"和"Win.ini"。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。以及XML文件的国际标准化给INI文件又一次打击。 但在某些场合,INI文件还拥有其不可替代的地位。比如绿色软件的规定就是不向注册表和系统中填入新东西。对于软件需要储存的信息就需要存入到文件中了。XML虽然兼容性比较好,但对于仅仅保存几个自定义参数而言就显得大材小用了。这是就可以选择使用快速简单的储存方式:INI文件。 本文就来探讨一下C#是如何对INI进行读写操作。
主要思路是调用Win32 API。 1.引入命名空间
using System.Runtime.InteropServices;
2.声明(把一个Win32 API函数转成C#函数)
//声明INI文件的写操作函数 WritePrivateProfileString()
[DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); //声明INI文件的读操作函数 GetPrivateProfileString() [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
3.函数
/* 写入值到ini文件 */
public void WriteValue(string section, string key, string value) { // section=配置节,key=键名,value=键值,path=路径 WritePrivateProfileString(section, key, value, sPath); } /* 从ini文件读取值 */ public string ReadValue(string section, string key) { // 每次从ini中读取多少字节 System.Text.StringBuilder temp = new System.Text.StringBuilder(255); // section=配置节,key=键名,temp=上面,path=路径 GetPrivateProfileString(section, key, "", temp, 255, sPath); return temp.ToString(); }
到此基本功能已经实现了。下面我们将所有的代码重新整合一下:
namespace Library.File
{ public class Ini { // 声明INI文件的写操作函数 WritePrivateProfileString() [System.Runtime.InteropServices.DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); // 声明INI文件的读操作函数 GetPrivateProfileString() [System.Runtime.InteropServices.DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath); private string sPath = null; /* 构造函数 */ public Ini(string path) { this.sPath = path; } /* 写入值到ini文件 */ public void WriteValue(string section, string key, string value) { // section=配置节,key=键名,value=键值,path=路径 WritePrivateProfileString(section, key, value, sPath); } /* 从ini文件读取值 */ public string ReadValue(string section, string key) { // 每次从ini中读取多少字节 System.Text.StringBuilder temp = new System.Text.StringBuilder(255); // section=配置节,key=键名,temp=上面,path=路径 GetPrivateProfileString(section, key, "", temp, 255, sPath); return temp.ToString(); } } }
开始调用函数。
// 写入ini
Ini ini = new Ini("C:/config.ini"); ini.WriteValue("Setting", "key1", "HELLO WORLD!"); ini.WriteValue("Setting", "key2", "HELLO CHINA!"); /* 在C盘下生成自动生成一个config.ini文件,内容如下: [Setting] key1=HELLO WORLD! key2=HELLO CHINA! */ // 读取ini Ini ini = new Ini("C:/config.ini"); string str1 = ini.ReadValue("Setting", "key1"); MessageBox.Show(str1); /* str1显示为 HELLO WORLD!; */ 上面代码仅提供思路并未测试,如要直接使用,请下载代码。 源代码 https://files.cnblogs.com/prince1988/Library.File.Ini.rar |
请发表评论