WindowsシステムにおけるC#読み書きiniプロファイルのプログラムコード例の共有

3998 ワード

最近INIプロファイルの読み書きに触れましたが、昔からマイクロソフトはINIプロファイルの代わりにレジストリを使うことをお勧めしていましたが、今ではVisual Studioにも専門的なものがあります.Netプロファイルフォーマットですが、やはりINIプロファイルが気に入っているようです.事実上NetのXML形式のプロファイルは機能的により強く、このタイプのプロファイルを使用することをお勧めします.Netソフトウェアの開発、私がINIプロファイルを使うのは、新鮮さと個人的な習慣を味わいたいからにほかならない.
C#自体はINIプロファイルにアクセスする方法を提供していませんが、WinAPIが提供する方法でINIファイルの読み書きを処理することができます.コードは簡単です.ネット上には既存のコードがたくさんありますが、ここは記録と整理として、後で使うのに便利です.
INIプロファイルの構成?
INIファイルはテキストファイルであり、いくつかの節(section)からなり、各括弧付き節名の下に、いくつかのキーワード(key)とその対応する値(Value)があり、これらのキーワード(key)はキーワード(key)上にある節(section)に属する.

[Section]
Key1=Value1
Key2=Value2

Windowsシステムが持つWin 32のAPI関数GetPrivateProfileString()とWritePrivateProfileString()は、それぞれINIファイルの読み書き操作を実現しているので、一般的なアプリケーションの構成アクセス要件を満たすために簡単なクラスを書くことができます.

class IniFile 
  { 
    /* 
    *   API   
    */ 
    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); 
 
    ///  
    ///      
    ///  
    /// ini    ,        default.ini 
    public IniFile(string iniPath = "./default.ini") 
    { 
      this.iniPath = iniPath; 
    } 
 
    ///  
    ///   ini   
    ///  
    /// Section 
    ///   
    ///   
    public void writeIni(string Section, string Key, string Value) 
    { 
      WritePrivateProfileString(Section, Key, Value, this.iniPath); 
    } 
 
    ///  
    ///   ini  ,  section,    default  
    ///  
    ///   
    ///   
    public void writeIni(string Key, string Value) 
    { 
      WritePrivateProfileString("default", Key, Value, this.iniPath); 
    } 
 
    ///  
    ///   ini   
    ///  
    /// Section 
    ///   
    ///      
    public string readIni(string Section, string Key) 
    { 
      StringBuilder temp = new StringBuilder(256); 
      int i = GetPrivateProfileString(Section, Key, "", temp, 256, this.iniPath); 
      return temp.ToString(); 
    } 
 
    ///  
    ///   section,  section,   default    
    ///  
    ///   
    ///     
    public string readIni(string Key) 
    { 
      return readIni("default", Key); 
    } 
 
    ///  
    ///   ini       
    ///  
    ///      
    public bool existINIFile() 
    { 
      return File.Exists(iniPath); 
    } 
  } 

呼び出し方法:

class Program 
{ 
  static void Main(string[] args) 
  { 
    IniFile iniFile = new IniFile("./hello.ini"); 
    iniFile.writeIni("section1", "key1", "value11"); 
    iniFile.writeIni("section1", "key2", "value12"); 
    iniFile.writeIni("section2", "key1", "value21"); 
    iniFile.writeIni("section2", "key2", "value22"); 
 
    iniFile.writeIni("key", "value"); 
 
    string str = iniFile.readIni("key"); 
    Console.WriteLine(str); 
    Console.ReadKey(); 
  } 
}