C#配置文件讀取

一、首先在項目解決方案內新添加一個類,命名爲iniFile.cs

1. 添加以下頭文件

using System.IO;
using System.Runtime.InteropServices;


2. 定義一個全局變量路徑字符串來傳遞路徑,改路徑存儲的是將要讀取或者寫入ini文件的位置

public string path;

 

3.  引入kernel32.dll這個動態連接庫,該動態連接庫裏面包含了很多WindowsAPI函,

 

1)繼承dll文件函數的寫入

/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="val"></param>
/// <param name="filePath"></param>
/// <returns></returns>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

 

2)繼承dll文件函數的讀取

/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="def"></param>
/// <param name="retVal"></param>
/// <param name="size"></param>
/// <param name="filePath"></param>
/// <returns></returns>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

 

 

4. ini文件構造器

/// <param name="INIPath"></param>
public IniFile(string INIPath)
{
      path = INIPath;
}

 


5. 向ini文件寫入數據,其中section爲段名,key爲鍵名,value爲鍵對應的值

/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="Value"></param>
public void WriteString(string Section, string Key, string Value)
{
        WritePrivateProfileString(Section, Key, Value, this.path);
}

 

6.從ini文件讀取數據

/// <param name="Section"></param>
/// <param name="Key"></param>
/// <param name="Path"></param>
/// <returns></returns>
public string ReadString(string Section, string Key)
{
        StringBuilder temp = new StringBuilder(255);
        int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.path);
        return temp.ToString();
}


二、代碼舉例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Runtime.InteropServices;
namespace Code
{
    static void Main()
    {
        iniFile _file;    
        WriteProfile();    
        Console.WriteLine(ReadProfile());
        public string ReadProfile()
        {
            //FilePath = %Project Path%\%Proje Name%\bin\Debug    
            string strPath = AppDomain.CurrentDomain.BaseDirectory;
            _file = new iniFile(strPath + "SerialPortData.ini");    
            string _str1 = _file.ReadString("Section1", "Key1");
            string _str2 = _file.ReadString("Section1", "Key2");
            string _str3 = _file.ReadString("Section2", "Key1");
            string _str4 = _file.ReadString("Section2", "Key2");
            return _str1 + _str2 + _str3 + _str4;
        }

        public void WriteProfile()
        {  
            string strPath = AppDomain.CurrentDomain.BaseDirectory;
            _file = new iniFile(strPath + "SerialPortData.ini"); 
            _file.WriteString("Section1", "Key1", "111");
            _file.WriteString("Section1", "Key2", "222");
            _file.WriteString("Section2", "Key1", "333");
            _file.WriteString("Section2", "Key2", "444");
        }

    }
}

 

 

 

 

 

 

 

發佈了45 篇原創文章 · 獲贊 46 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章