热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> .Net编程>>正文内容

C#操作INI文件

发布时间:2009年02月18日点击数: 未知
在网上找了关于ini文件读写方法,还是没有找到ini文件中有一个Section多个Key的读写情况,在一篇C++文章中得到点提示操作如下:

1.创建ini文件读写类:
using System.Runtime.InteropServices;
using System.Text;


namespace INIDemo
{
    /**////  <summary>
    ///  读写ini文件的类
    ///  调用kernel32.dll中的两个API:WritePrivateProfileString,GetPrivateProfileString
    ///  来实现对ini  文件的读写。
    ///  INI文件是文本文件,
    ///  由若干节(section)组成,
    ///  在每个带括号的标题下面,
    ///  是若干个关键词(key)及其对应的值(value)  
    ///  例如:
    ///  [Section]
    ///  Key=value
    ///  </summary>

    public class IniFile
    {
        /**////  <summary>
        ///  ini文件名称(带路径)
        ///  </summary>

        public string filePath;

        /**////  声明读写INI文件的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);

        /**/
///  <summary>
        ///  类的构造函数
        ///  </summary>
        ///  <param  name="INIPath">INI文件名</param>  

        public IniFile(string INIPath)
        {
            filePath = INIPath;
        }

        /**////  <summary>
        ///  写INI文件
        ///  </summary>
        ///  <param  name="Section">Section</param>
        ///  <param  name="Key">Key</param>
        ///  <param  name="value">value</param>

        public void WriteInivalue(string Section, string Key, string value)
        {
            WritePrivateProfileString(Section, Key, value, this.filePath);
        }

        /**////  <summary>
        ///  读取INI文件指定部分
        ///  </summary>
        ///  <param  name="Section">Section</param>
        ///  <param  name="Key">Key</param>
        ///  <returns>String</returns>  

        public string ReadInivalue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(1024);
            int i = GetPrivateProfileString(Section, Key, "读取错误", temp, 1024, this.filePath);
            return temp.ToString();
        }

    }

}

2.测试INI文件读写:
//写入ini文件
        private void button1_Click(object sender, EventArgs e)
        {
            string filePath = Path.GetFullPath(@"demo.ini");
            IniFile iniFile = new IniFile(filePath);

            //在一个section中写入一个key
            iniFile.WriteInivalue("Section1", "Key1", "Key1's Value");
            iniFile.WriteInivalue("Section2", "Key2", "Key2's Value");

            //在一个section中写入多个key
            string[] fileNames = new string[] { "file1", "file2", "file3", "file4" };
            string[] values = new string[] { "value1", "value2", "value3", "value4" };
            for (int i = 0; i < 4; i++)
            {
                iniFile.WriteInivalue("UseFileName", fileNames[i], values[i]);
            }

        }


        //读取ini文件
        private void button2_Click(object sender, EventArgs e)
        {
            string filePath = Path.GetFullPath(@"demo.ini");
            IniFile iniFile = new IniFile(filePath);

            //读取单个section的单个值
            string singleValue1 = null;
            string singleValue2 = null;
            singleValue1 = iniFile.ReadInivalue("Section1", "Key1");
            singleValue2 = iniFile.ReadInivalue("Section2", "Key2");
            MessageBox.Show(singleValue1 + " " + singleValue2);

            //读取单个section的多个值
            string[] fileNames = new string[] { "file1", "file2", "file3", "file4" };
            ArrayList values = new ArrayList();
            for (int i = 0; i < 4; i++)
            {
                values.Add(iniFile.ReadInivalue("UseFileName", fileNames[i]));
            }


            int nCount = values.Count;
            string multiValues = null;
            for (int i = 0; i < nCount; i++)
            {
                multiValues += values[i].ToString() + " ";
            }

            MessageBox.Show(multiValues);
        }

结果:
[Section1]
Key1=Key1's Value
[Section2]
Key2=Key2's Value
[UseFileName]
file1=value1
file2=value2
file3=value3
file4=value4

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作