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

我只在讀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         }
IniInvokingExe

本人是讀取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;

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

希望可以幫助到你!

(原創) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM