最近用到保存文件的相关东西,主要是封装两个函数,代码如下:可以直接使用
using System;
using System.Collections.Specialized;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace IniFileTest
{
    public class INI
    {
        const int COUNT = 0xFFFF;
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, byte[] buffer, int size, string filePath);
        /// <summary>
        /// ini关联的文件
        /// </summary>
        private string FileName;
        public INI(string filename)
        {
            FileInfo file = new FileInfo(filename);
            if (file.Exists)
            {
                FileName = new FileInfo(filename).FullName;
            }
        }
        /// <summary>
        /// 删除Section
        /// </summary>
        /// <param name="SectionName"></param>
        /// <returns></returns>
        public bool EraseSection(string SectionName)
        {
            return WritePrivateProfileString(SectionName, null, null, FileName);
        }
        /// <summary>
        /// 写入section 键值对,如果没有section 则创建并写入
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public bool Write(string section, string key, string value)
        {
            return WritePrivateProfileString(section, key, value, FileName);
        }
        /// <summary>
        /// 删除键
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public bool EraseKey(string section, string key)
        {
            return WritePrivateProfileString(section, key, null, FileName);
        }
        /// <summary>
        /// 获取所有section
        /// </summary>
        /// <returns></returns>
        public StringCollection GetSections()
        {
            StringCollection sections = new StringCollection();
            byte[] buffer = new byte[COUNT];
            int length = GetPrivateProfileString(null, null, null, buffer, COUNT, FileName);
            int start = 0;
            for (int i = 0; i < length; i++)
            {
                if (buffer[i] == 0 && i > start)
                {
                    string str = Encoding.Default.GetString(buffer, start, i - start);
                    sections.Add(str);
                    start = i + 1; ;
                }
            }
            return sections;
        }
        /// <summary>
        /// 获取section下的所哟keys
        /// </summary>
        /// <param name="section"></param>
        /// <returns></returns>
        public StringCollection GetSectionKeys(string section)
        {
            StringCollection keys = new StringCollection();
            byte[] buffer = new byte[COUNT];
            int length = GetPrivateProfileString(section, null, null, buffer, COUNT, FileName);
            int start = 0;
            for (int i = 0; i < length; i++)
            {
                if (buffer[i] == 0 && i > start)
                {
                    string str = Encoding.Default.GetString(buffer, start, i - start);
                    keys.Add(str);
                    start = i + 1; ;
                }
            }
            return keys;
        }
        /// <summary>
        /// 查寻指定的key的值,没有则返回defaultvalue
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="defaultvalue"></param>
        /// <returns></returns>
        public String GetValue(String section, string key, string defaultvalue)
        {
            byte[] bytes = new byte[COUNT];
            int s = GetPrivateProfileString(section, key, defaultvalue, bytes, COUNT, FileName);
            string str = Encoding.GetEncoding(0).GetString(bytes, 0, s);
            return defaultvalue;
        }
 
    }
}
原文地址:http://www.cnblogs.com/shenfuqiang/p/3832689.html