zoukankan      html  css  js  c++  java
  • 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;

    测试截图就不发了,本人于这项技术也是现学现卖,只是自己搞出来之后,想记录在此,希望方便以后的学习。

    希望可以帮助到你!

    (原创) 

     

  • 相关阅读:
    nginx 配置详解
    ngnix 负载均衡
    nginx 安装搭建与配置介绍
    11.15java实习生面试总结
    笔试题:编写一个用户注册接口
    java第一次笔试+面试总结
    《啊哈算法》读后总结(下)
    java常见排序算法
    Tomcat安装及配置教程
    算法题:购买n个苹果,苹果6个一袋或者8个一袋,若想袋数最少,如何购买?
  • 原文地址:https://www.cnblogs.com/yanran444/p/7889446.html
Copyright © 2011-2022 走看看