㈠ C# winform 的配置文件用什麼保存好,txt,ini.還是xml.
都可以,看你自己選擇了
txt需要自定義格式
xml可以用XmlDocument操作
ini要通過DllImport("kernel32")來引入外部函數操作
㈡ 用C#如何讀寫配置文件
INI文件就是擴展名為"ini"的文件。x0dx0a其一般形式如下:x0dx0a[section1] // 配置節x0dx0a//鍵名 //鍵值x0dx0akeyword1 = valuelx0dx0akeyword2 = value2x0dx0a??x0dx0a[section2]x0dx0akeyword3 = value3x0dx0akeyword4 = value4x0dx0a在Windows系統中,INI文件是很多,最重要的就是"System.ini"、"System32.ini"和"Win.ini"。該文件主要存放用戶所做的選擇以及系統的各種參數。用戶可以通過修改INI文件,來改變應用程序和系統的很多配置。但自從Windows 95的退出,在Windows系統中引入了注冊表的概念,INI文件在Windows系統的地位就開始不斷下滑,這是因為注冊表的獨特優點,使應用程序和系統都把許多參數和初始化信息放進了注冊表中。以及XML文件的國際標准化給INI文件又一次打擊。x0dx0a但在某些場合,INI文件還擁有其不可替代的地位。比如綠色軟體的規定就是不向注冊表和系統中填入新東西。對於軟體需要儲存的信息就需要存入到文件中了。XML雖然兼容性比較好,但對於僅僅保存幾個自定義參數而言就顯得大材小用了。這是就可以選擇使用快速簡單的儲存方式:INI文件。x0dx0a本文就來探討一下C#是如何對INI進行讀寫操作。x0dx0a主要思路是調用Win32 API。x0dx0a1.引入命名空間x0dx0ausingSystem.Runtime.InteropServices;x0dx0a2.聲明(把一個Win32 API函數轉成C#函數)x0dx0a//聲明INI文件的寫操作函數 WritePrivateProfileString()x0dx0a[DllImport("kernel32")]x0dx0aprivate static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath);x0dx0a//聲明INI文件的讀操作函數 GetPrivateProfileString()x0dx0a[DllImport("kernel32")]x0dx0aprivate static extern intGetPrivateProfileString(string section, string key, string def, StringBuilderretVal, int size, string filePath);x0dx0a3.函數x0dx0apublic void Writue(string section,string key, string value)x0dx0a{x0dx0a// section=配置節,key=鍵名,value=鍵值,path=路徑(section,key, value, sPath);x0dx0a}x0dx0apublic string ReadValue(stringsection, string key)x0dx0a{x0dx0a// 每次從ini中讀取多少位元組x0dx0aSystem.Text.StringBuilder temp =new System.Text.StringBuilder(255);x0dx0a// section=配置節,key=鍵名,temp=上面,path=路徑x0dx0aGetPrivateProfileString(section,key, "", temp, 255, sPath);x0dx0areturntemp.ToString(); //注意類型的轉換x0dx0a}x0dx0a到此基本功能已經實現了。下面我們將所有的代碼重新整合一下:x0dx0anamespace Library.Filex0dx0a{x0dx0apublic class Inix0dx0a{x0dx0a// 聲明INI文件的寫操作函數 WritePrivateProfileString()x0dx0a[System.Runtime.InteropServices.DllImport("kernel32")]x0dx0aprivate static extern longWritePrivateProfileString(string section, string key, string val, stringfilePath);x0dx0a// 聲明INI文件的讀操作函數 GetPrivateProfileString()x0dx0a[System.Runtime.InteropServices.DllImport("kernel32")]x0dx0aprivate static extern intGetPrivateProfileString(string section, string key, string def,System.Text.StringBuilder retVal, int size, string filePath);x0dx0aprivate string sPath = null;x0dx0apublic Ini(string path)x0dx0a{x0dx0athis.sPath = path;x0dx0a}x0dx0apublic void Writue(string section,string key, string value)x0dx0a{x0dx0a// section=配置節,key=鍵名,value=鍵值,path=路徑(section,key, value, sPath);x0dx0a}x0dx0apublic string ReadValue(stringsection, string key)x0dx0a{x0dx0a// 每次從ini中讀取多少位元組x0dx0aSystem.Text.StringBuilder temp =new System.Text.StringBuilder(255);x0dx0a// section=配置節,key=鍵名,temp=上面,path=路徑x0dx0aGetPrivateProfileString(section,key, "", temp, 255, sPath);x0dx0areturn temp.ToString();x0dx0a}x0dx0a}x0dx0a}x0dx0a開始調用函數。x0dx0a// 寫入inix0dx0aIni ini = newIni("C:/config.ini");x0dx0aini.Writue("Setting","key1", "HELLO WORLD!");x0dx0aini.Writue("Setting","key2", "HELLO CHINA!");x0dx0a// 讀取inix0dx0aIni ini = newIni("C:/config.ini");x0dx0astring str1 =ini.ReadValue("Setting", "key1");x0dx0aMessageBox.Show(str1);x0dx0a二,在一些小的應用中,有時候不需要使用數據困這樣大規模的數據管理工具,也很少進行數據的查詢、修改等操作,而僅用文件來存儲數據。這時就需要使用。net中的文件操作對象,如file、streamReader、streamWriter等。x0dx0a1,使用File對象操作文件x0dx0aSystem.IO.File類提供了一系類的靜態辦法,完成對晚間的常用操作,如新建、刪除、拷貝、移動等x0dx0a2,使用StreamWriter寫入文件x0dx0a在System.IO空間中定義了一個文件寫入器對象StreamWriter,使用它可以以一種特定的編碼向輸出流中(Stream)寫入字元。x0dx0a3,使用SteamReader讀取文件x0dx0a與streamWrite對應