zoukankan      html  css  js  c++  java
  • C#操作INI文件

     public class SaveInfor
    {
    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">文件路径</param>
    public SaveInfor(string INIPath)
    {
    inipath
    = Application.StartupPath +"\\" +INIPath;
    }
    /// <summary>
    /// 写入INI文件
    /// </summary>
    /// <param name="Section">项目名称(如 [TypeName] )</param>
    /// <param name="Key"></param>
    /// <param name="Value"></param>
    public void IniWriteValue(string Section, string Key, string Value)
    {
    WritePrivateProfileString(Section, Key, Value,
    this.inipath);
    }
    /// <summary>
    /// 读出INI文件
    /// </summary>
    /// <param name="Section">项目名称(如 [TypeName] )</param>
    /// <param name="Key"></param>
    public string IniReadValue(string Section, string Key)
    {
    StringBuilder temp
    = new StringBuilder(500);
    int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
    return temp.ToString();
    }

    /// <summary>
    /// 读出字符数组
    /// </summary>
    /// <param name="Section">项目名称(如 [TypeName] )</param>
    /// <param name="Key"></param>
    /// <returns></returns>
    public List<string> IniReadValues(string Section, string Key)
    {
    string[] str = IniReadValue(Section, Key).Split(',');
    List
    <string> li = new List<string>();
    foreach (string s in str)
    {
    if (!string.IsNullOrEmpty(s))
    {
    li.Add(s);
    }
    }
    return li;
    }
     /// <summary>
    /// 读写INI文件的类。
    /// </summary>
    public class INIHelper
    {
    // 读写INI文件相关。
    [DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileString", CharSet = CharSet.Ansi)]
    public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
    [DllImport(
    "kernel32.dll", EntryPoint = "GetPrivateProfileString", CharSet = CharSet.Ansi)]
    public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

    [DllImport(
    "kernel32.dll", EntryPoint = "GetPrivateProfileSectionNames", CharSet = CharSet.Ansi)]
    public static extern int GetPrivateProfileSectionNames(IntPtr lpszReturnBuffer, int nSize, string filePath);

    [DllImport(
    "KERNEL32.DLL ", EntryPoint = "GetPrivateProfileSection", CharSet = CharSet.Ansi)]
    public static extern int GetPrivateProfileSection(string lpAppName, byte[] lpReturnedString, int nSize, string filePath);


    /// <summary>
    /// 向INI写入数据。
    /// </summary>
    /// <PARAM name="Section">节点名。</PARAM>
    /// <PARAM name="Key">键名。</PARAM>
    /// <PARAM name="Value">值名。</PARAM>
    public static void Write(string Section, string Key, string Value, string path)
    {
    WritePrivateProfileString(Section, Key, Value, path);
    }


    /// <summary>
    /// 读取INI数据。
    /// </summary>
    /// <PARAM name="Section">节点名。</PARAM>
    /// <PARAM name="Key">键名。</PARAM>
    /// <PARAM name="Path">值名。</PARAM>
    /// <returns>相应的值。</returns>
    public static string Read(string Section, string Key, string path)
    {
    StringBuilder temp
    = new StringBuilder(255);
    int i = GetPrivateProfileString(Section, Key, "", temp, 255, path);
    return temp.ToString();
    }

    /// <summary>
    /// 读取一个ini里面所有的节
    /// </summary>
    /// <param name="sections"></param>
    /// <param name="path"></param>
    /// <returns></returns>
    public static int GetAllSectionNames(out string[] sections, string path)
    {
    int MAX_BUFFER = 32767;
    IntPtr pReturnedString
    = Marshal.AllocCoTaskMem(MAX_BUFFER);
    int bytesReturned = GetPrivateProfileSectionNames(pReturnedString, MAX_BUFFER, path);
    if (bytesReturned == 0)
    {
    sections
    = null;
    return -1;
    }
    string local = Marshal.PtrToStringAnsi(pReturnedString, (int)bytesReturned).ToString();
    Marshal.FreeCoTaskMem(pReturnedString);
    //use of Substring below removes terminating null for split
    sections = local.Substring(0, local.Length - 1).Split('\0');
    return 0;
    }

    /// <summary>
    /// 得到某个节点下面所有的key和value组合
    /// </summary>
    /// <param name="section"></param>
    /// <param name="keys"></param>
    /// <param name="values"></param>
    /// <param name="path"></param>
    /// <returns></returns>
    public static int GetAllKeyValues(string section, out string[] keys, out string[] values, string path)
    {
    byte[] b = new byte[65535];

    GetPrivateProfileSection(section, b, b.Length, path);
    string s = System.Text.Encoding.Default.GetString(b);
    string[] tmp = s.Split((char)0);
    ArrayList result
    = new ArrayList();
    foreach (string r in tmp)
    {
    if (r != string.Empty)
    result.Add(r);
    }
    keys
    = new string[result.Count];
    values
    = new string[result.Count];
    for (int i = 0; i < result.Count; i++)
    {
    string[] item = result[i].ToString().Split(new char[] { '=' });
    if (item.Length == 2)
    {
    keys[i]
    = item[0].Trim();
    values[i]
    = item[1].Trim();
    }
    else if (item.Length == 1)
    {
    keys[i]
    = item[0].Trim();
    values[i]
    = "";
    }
    else if (item.Length == 0)
    {
    keys[i]
    = "";
    values[i]
    = "";
    }
    }

    return 0;
    }

    }

      

      

  • 相关阅读:
    多西:一个创立了Twitter与Square的程序员
    越狱黑客Comex结束苹果实习生涯 将专注学校学习生活
    关于从页面中获取用户控件中的其它控件(如DropDownList)事件的方法
    如何更改VS2010的[默认开发语言]默认环境设置
    TRULY Understanding ViewState exactl
    .net平台下xml操作
    正则表达式学习2
    正则表达式学习3
    petshop 出现没有为 SQL 缓存通知启用数据库“MSPetShop4”
    利用ashx以XML返回的形式和ajax实现表格的异步填充
  • 原文地址:https://www.cnblogs.com/yannis/p/2120820.html
Copyright © 2011-2022 走看看