C#讀寫ini配置文件的方法

先來講兩句廢話html

本人C#也沒有系統學過,但願之後有機會補充上,本身只是在工做中使用到了這項技術,逐漸摸索和同事的指導,還算能夠正常工做,瀏覽器

在編寫C#前臺的代碼的時候,常常會碰到要讀取本地的配置文件的時候,經過配置文件來調用其餘程序,ide

爲何要讀取ini配置文件?因爲程序上線以後會進行打包封裝,程序內部便不方便修改,那麼即可以經過修改ini配置文件函數

那麼下面就仔細講一下如何操做的。post

首先第一步:先寫一個公共的類,以備其餘人使用。學習

 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 }
OperateIniFile

我只在讀ini文件中寫了註釋,寫和讀相似測試

而後我是封裝了一個靜態方法,在另外一個公共類中,來調用OperateIniFile方法,ui

 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         }
IniInvokingExe

本人是讀取ini配置文件來讀取其中的路徑,來調用該路徑下的exe文件,url

其中,要注意的是,不要忘了引入公共的類,using ...;spa

而後到設計上找到你要調用的位置,點擊進入以後,調用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;

測試截圖就不發了,本人於這項技術也是現學現賣,只是本身搞出來以後,想記錄在此,但願方便之後的學習。

但願能夠幫助到你!

(原創) 

相關文章
相關標籤/搜索