using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
public class IniFile
{
    private string path;
    ///   <summary> 
    ///   实例初始化为指定路径的INI文件。 
    ///   </summary> 
    ///   <param   name= "path "> INI文件路径。 </param> 
    public IniFile(string path)
    {
        this.path = path;
    }    ///   <summary> 
    ///   获取INI文件的路径。 
    ///   </summary> 
    public string Path
    {
        get
        {
            return path;
        }
    }    /// <summary>
    /// 读取某个项目>>键的值(字符型)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="defaultValue">找不到后,设定默认值</param>
    /// <returns>字符型</returns>
    public string ReadString(string sectionName, string keyName, string defaultValue)
    {
        const int MAXSIZE = 255;
        StringBuilder temp = new StringBuilder(MAXSIZE);
        GetPrivateProfileString(sectionName, keyName, defaultValue, temp, 255, this.path);
        return temp.ToString();
    }
    /// <summary>
    /// 写入某个项目>>键的值(字符串)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="value">值</param>
    public void WriteString(string sectionName, string keyName, string value)
    {
        WritePrivateProfileString(sectionName, keyName, value, this.path);
    }
    /// <summary>
    /// 读取某个项目>>键的值(整型)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="defaultValue">找不到后,设定默认值</param>
    /// <returns>整型</returns>
    public int ReadInteger(string sectionName, string keyName, int defaultValue)
    {
        return GetPrivateProfileInt(sectionName, keyName, defaultValue, this.path);
    }
    /// <summary>
    /// 写入某个项目>>键的值(整型)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="value">值</param>
    public void WriteInteger(string sectionName, string keyName, int value)
    {
        WritePrivateProfileString(sectionName, keyName, value.ToString(), this.path);
    }
    /// <summary>
    /// 读取某个项目>>键的值(逻辑型)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="defaultValue">找不到后,设定默认值</param>
    /// <returns>逻辑型</returns>
    public bool ReadBoolean(string sectionName, string keyName, bool defaultValue)
    {
        int temp = defaultValue ? 1 : 0;
        int result = GetPrivateProfileInt(sectionName, keyName, temp, this.path);
        return (result == 0 ? false : true);
    }
    /// <summary>
    /// 写入某个项目>>键的值(逻辑型)
    /// </summary>
    /// <param name="sectionName">项目名称</param>
    /// <param name="keyName">键</param>
    /// <param name="value">值</param>
    public void WriteBoolean(string sectionName, string keyName, bool value)
    {
        string temp = value ? "1 " : "0 ";
        WritePrivateProfileString(sectionName, keyName, temp, this.path);
    }    ///   <summary> 
    ///   删除某个项目>>键
    ///   </summary> 
    ///   <param   name= "sectionName "> 项目名称 </param> 
    ///   <param   name= "keyName "> 键</param> 
    public void DeleteKey(string sectionName, string keyName)
    {
        WritePrivateProfileString(sectionName, keyName, null, this.path);
    }    ///   <summary> 
    ///   删除某个项目的整个项 
    ///   </summary> 
    ///   <param   name= "sectionName "> 项目名称</param> 
    public void EraseSection(string sectionName)
    {
        WritePrivateProfileString(sectionName, null, null, this.path);
    }
    #region
    [DllImport("kernel32")]
    public static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
    [DllImport("kernel32")]
    public static extern int GetPrivateProfileInt(string lpApplicationName, string lpKeyName, int nDefault, string lpFileName);
    [DllImport("kernel32")]
    public static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
    #endregion
} 这个代码是可以写和读的,我用过,会用就是还是有点不明白没用到流之类的是如何向文件里写入数据的。。问题1:WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName)  这个方法是写入string的数据。但是方法体力什么都没写,怎么写入到ini文件里呀?(还有其他的几个读,删的方法)???问题2:extern这个修饰符是如何用的??谢谢帮忙的大家帮忙。
 。          我刚学差不多一个月,有很多不懂,有活跃的.net技术群的QQ 号码。。我加。。
        

解决方案 »

  1.   


          [DllImport("kernel32")]
          public static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);    }
    来人解释下这句。        来人呀呀呀呀呀呀呀呀呀呀呀呀。
      

  2.   

    Windows API...懒得解释,自己查MSDN去...还有,这种老API已经过时了,要是我宁愿当txt处理...
      

  3.   

    系统api,已经做好的,你关心怎么用就好了。具体里面怎么操作的还是不要研究,没意义。