C#读写ini配置文件的方法
先来说两句废话
本人C#也没有系统学过,希望以后有机会补充上,自己只是在工作中使用到了这项技术,逐渐摸索和同事的指导,还算可以正常工作,
在编写C#前台的代码的时候,经常会碰到要读取本地的配置文件的时候,通过配置文件来调用其他程序,
为什么要读取ini配置文件?由于程序上线之后会进行打包封装,程序内部便不方便修改,那么便可以通过修改ini配置文件
那么下面就仔细讲一下如何操作的。
首先第一步:先写一个公共的类,以备其他人使用。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Runtime.InteropServices; 7 8 namespace Zebone.His 9 { 10 public class OperateIniFile 11 { 12 #region API函数声明 13 14 [DllImport("kernel32")]//返回0表示失败,非0为成功 15 private static extern long WritePrivateProfileString(string section,string key, 16 string val,string filePath); 17 18 [DllImport("kernel32")]//返回取得字符串缓冲区的长度 19 private static extern long GetPrivateProfileString(string section,string key, 20 string def,StringBuilder retVal,int size,string filePath); 21 22 23 #endregion 24 /// <summary> 25 /// 读Ini文件 26 /// </summary> 27 /// <param name="Section">[]内的段落名</param> 28 /// <param name="Key">key</param> 29 /// <param name="NoText"></param> 30 /// NoText对应API函数的def参数,它的值由用户指定,是当在配置文件中没有找到具体的Value时,就用NoText的值来代替。可以为空 31 /// <param name="iniFilePath">ini配置文件的路径加ini文件名</param> 32 /// <returns></returns> 33 #region 读Ini文件 34 35 public static string ReadIniData(string Section,string Key,string NoText,string iniFilePath) 36 { 37 if(File.Exists(iniFilePath)) 38 { 39 StringBuilder temp = new StringBuilder(1024); 40 GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath); 41 return temp.ToString(); 42 } 43 else 44 { 45 return String.Empty; 46 } 47 } 48 49 #endregion 50 51 #region 写Ini文件 52 53 public static bool WriteIniData(string Section,string Key,string Value,string iniFilePath) 54 { 55 if(File.Exists(iniFilePath)) 56 { 57 long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath); 58 if(OpStation == 0) 59 { 60 return false; 61 } 62 else 63 { 64 return true; 65 } 66 } 67 else 68 { 69 return false; 70 } 71 } 72 73 #endregion 74 } 75 }
我只在读ini文件中写了注释,写和读类似
然后我是封装了一个静态方法,在另一个公共类中,来调用OperateIniFile方法,
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Diagnostics; 10 11 ... 12 13 /// <summary> 14 /// 通过读取ini配置文件,调用exe文件 15 /// Pvcode 住院号 16 /// </summary> 17 public static void IniInvokingExe(string sta,string Pvcode) 18 { 19 string LisPath = OperateIniFile.ReadIniData("ext_exe", "lis_path", null, "C:\\Windows\\trisun_cis.ini"); 20 string PacsPath = OperateIniFile.ReadIniData("ext_exe", "pacs_path", null, "C:\\Windows\\trisun_cis.ini"); 21 string Lis = OperateIniFile.ReadIniData("ext_exe", "lis", null, "C:\\Windows\\trisun_cis.ini"); 22 string Pacs = OperateIniFile.ReadIniData("ext_exe", "pacs", null, "C:\\Windows\\trisun_cis.ini"); 23 string ygConnectPath = OperateIniFile.ReadIniData("ext_exe", "yg_connect_path", null, "C:\\Windows\\trisun_cis.ini"); 24 string ygConnect = OperateIniFile.ReadIniData("ext_exe", "yg_connect", null, "C:\\Windows\\trisun_cis.ini"); 25 if (Lis == "" || Lis == null) 26 { 27 MessageBoxUtils.Hint("该程序未安装!"); 28 return; 29 } 30 if(Pacs == "" || Pacs == null){ 31 MessageBoxUtils.Hint("该程序未安装!"); 32 return; 33 } 34 if(ygConnect == "" || ygConnect == null){ 35 MessageBoxUtils.Hint("该程序未安装!"); 36 return; 37 } 38 if (sta == "lis") 39 { 40 Process.Start(LisPath + "\\" + Lis,Pvcode); 41 return; 42 } 43 else if (sta == "pacs") 44 { 45 Process.Start(PacsPath + "\\" + Pacs,Pvcode); 46 return; 47 } 48 else 49 { 50 Process.Start(ygConnectPath + "\\" + ygConnect,Pvcode); 51 return; 52 } 53 }
本人是读取ini配置文件来读取其中的路径,来调用该路径下的exe文件,
其中,要注意的是,不要忘了引入公共的类,using ...;
然后到设计上找到你要调用的位置,点击进入之后,调用IniInvokingExe方法即可,
如果想要使用的话,只需要把IniInvokingExe方法中的参数去掉,即可读取ini文件,
1 string aa = OperateIniFile.ReadIniData("ext_exe", "lis_path", null, "D:\\aa\\trisun_cis.ini"); 2 string bb = OperateIniFile.ReadIniData("ext_exe", "yg_connect_path", null, "D:\\aa\\trisun_cis.ini"); 3 string cc = OperateIniFile.ReadIniData("ext_exe", "lis", null, "D:\\aa\\trisun_cis.ini"); 4 //MessageBox.Show(aa+"\\"+cc); 5 //Process.Start("YoukuDesktop.exe"); 6 string dd = "F:\\YouKuAndIqyi\\YouKu\\YoukuClient"; 7 string ee = "YoukuDesktop.exe"; 8 MessageBox.Show(dd); 9 Process.Start(dd + "\\" + ee); 10 //Process.Start("F:\\YouKuAndIqyi\\YouKu\\YoukuClient\\YoukuDesktop.exe"); 11 //Process.Start(aa + "\\" + cc);
这是方法体,其中的MessageBox.Show();可以查看读取的配置文件路径是否正确,
需要注意的是路径的写法,需要“\”的转义符!
是不是很简单!
附赠讲解如何调用exe程序
在C#中调用exe程序,在按钮的点击事件里写入
Process.Start("F:\\YouKuAndIqyi\\YouKu\\YoukuClient\\YoukuDesktop.exe");
这是本人拿自己的优酷视频做的例子,如果是c盘本地程序,或者是Windows系统的程序,(非外部程序)
可直接调用,
例如:Process.Start("IExplore.exe", "http://www.baidu.com");
这是调用的ie浏览器,后面的url是网址,点击之后,可以直接进入百度页面。
注意引入using System.Diagnostics;
测试截图就不发了,本人于这项技术也是现学现卖,只是自己搞出来之后,想记录在此,希望方便以后的学习。
希望可以帮助到你!
(原创)