文档章节

C#简单读写ini文件

ggself
 ggself
发布于 2016/05/04 16:19
字数 394
阅读 97
收藏 0

INI文件其实是一种文本文件,它的构成分为三部分 Section Key Value

[section1]
key1=value11
key2=value12
[section2]
key1=value21
key2=value22

Windows系统自带的Win32的API函数GetPrivateProfileString()和WritePrivateProfileString()分别实现了对INI文件的读写操作 所以可以写一个简单的类来读写ini文件,以满足一般应用的配置存取需求:

 class IniFile
    {
        /*
         * 声明API函数
         */
        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">ini文件路径,默认为当前路径下default.ini</param>
        public IniFile(string iniPath = "./default.ini")
        {
            this.iniPath = iniPath;
        }

        /// <summary>
        /// 写入ini文件
        /// </summary>
        /// <param name="Section">Section</param>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        public void writeIni(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.iniPath);
        }

        /// <summary>
        /// 写入ini文件,不管section,默认放在default里
        /// </summary>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        public void writeIni(string Key, string Value)
        {
            WritePrivateProfileString("default", Key, Value, this.iniPath);
        }

        /// <summary>
        /// 读取ini文件
        /// </summary>
        /// <param name="Section">Section</param>
        /// <param name="Key">键</param>
        /// <returns>返回的值</returns>
        public string readIni(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(256);
            int i = GetPrivateProfileString(Section, Key, "", temp, 256, this.iniPath);
            return temp.ToString();
        }

        /// <summary>
        /// 读取section,不管section,默认从default里读取
        /// </summary>
        /// <param name="Key">键</param>
        /// <returns>返回值</returns>
        public string readIni(string Key)
        {
            return readIni("default", Key);
        }

        /// <summary>
        /// 查询ini文件是否存在
        /// </summary>
        /// <returns>是否存在</returns>
        public bool existINIFile()
        {
            return File.Exists(iniPath);
        }
    }

调用方式:

    class Program
    {
        static void Main(string[] args)
        {
            IniFile iniFile = new IniFile("./hello.ini");
            iniFile.writeIni("section1", "key1", "value11");
            iniFile.writeIni("section1", "key2", "value12");
            iniFile.writeIni("section2", "key1", "value21");
            iniFile.writeIni("section2", "key2", "value22");

            iniFile.writeIni("key", "value");

            string str = iniFile.readIni("key");
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }

本文转载自:

ggself
粉丝 0
博文 15
码字总数 0
作品 0
东城
私信 提问
C#读写INI文件

作者: 盛放 http://oraasp.vicp.net/article/article.aspx?ID=26 虽然微软早已经建议在WINDOWS中用注册表代替INI文件,但是在实际应用中,INI文件仍然有用武之地,尤其现在绿色软件的流行,...

晨曦之光
2012/03/09
167
0
C#下.NET配置文件使用(一)

一步一步来,看看.net下的的 Configuration 或者说 Settings 走马观花 System.Configuration 命名空间中的东西是为读写应用程序的配置数据服务的。 在Windows早期,程序使用 .ini 作为配置文...

晨曦之光
2012/05/08
1K
0
Kelly/KSFramework

KEngine + SLua|XLua|ILRuntime+ Framework = KSFramework KSFramework是一个整合KEngine、SLua(或XLua、ILRuntime)的Unity 5 Asset Bundle开发框架,并为程序、美术、策划、运营提供辅助工具...

Kelly
2016/06/29
0
0
c#开发大全、系列文章、精品教程

全栈工程师开发手册 (作者:栾鹏) c#系列教程: c#实现ajax通信:向后台发送JSON字符串,接收响应字符串,并转换为对象 c#文件夹常用操作,属性设置,遍历、压缩 c#获取网页源代码的5种方式...

luanpeng825485697
2017/10/03
0
0
在VC中读写ini配置文件的函数

配置文件中经常用到ini文件,在VC中其函数分别为:    写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);    ...

范大脚脚
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

thinkphp5.1学习过程四——trait

<?php /** *trait实现了代码的复用 *并且突破了单继承的限制 *trait是类不是类,不能实例化 */ trait Demo1 { public function hello1() { return __METHOD__; } } trait Demo2 { public fu......

大海yht
27分钟前
6
0
DB2 sequence 操作

操作DB2 下 sequence seqName db2数据库一般seq还是比较大的,但是程序在调用的时候还是不可避免的有一些bug, 下面是对于seq一些简单的操作,也作为工作的一些记录 1、命令行取sequence se...

飞雪无痕
34分钟前
6
0
《吊打面试官》系列-秒杀系统设计

你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 絮叨 之前写了很多Redis相关的知识...

敖丙
40分钟前
12
0
Qt编写气体安全管理系统11-数据打印

一、前言 在各种软件系统中,数据打印也是常用的功能之一,一般来说会对查询的数据结果导出到excel,还会对查询的数据结果直接打印,在Qt中提供了打印机类QPrinter,在printsupport组件中,可...

飞扬青云
46分钟前
5
0
初级阶段

#include <stdio.h> #include <stdlib.h> int main(){ int a; int Sn = 0; int i; int tmp = 0; scanf_s("%d", &a); for (i = 1; i <= 5; i++) { tmp = tmp * 10 + a; Sn += tmp; } printf("......

Lxxxxx256
47分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部