欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# 读写INI文件

程序员文章站 2022-06-15 20:19:49
...

INI文件读写类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;

namespace Services.Common
{
    public class IniHelper
    {
        public string inipath;
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        /// <summary> 
        /// 构造方法 
        /// </summary> 
        /// <param name="INIPath">文件路径</param>
        public IniHelper(string INIPath)
        {
            inipath = INIPath;
        }
        /// <summary> 
        /// 写入INI文件 
        /// </summary> 
        /// <param name="Section">项目名称(如 [TypeName] )</param> 
        /// <param name="Key">键</param> 
        /// <param name="Value">值</param> 
        public void IniWriteValue(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.inipath);
        }
        /// <summary> 
        /// 读出INI文件 
        /// </summary> 
        /// <param name="Section">项目名称(如 [TypeName] )</param> 
        /// <param name="Key">键</param> 
        public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(500);
            int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
            return temp.ToString();
        }
        /// <summary> 
        /// 验证文件是否存在 
        /// </summary> 
        /// <returns>布尔值</returns> 
        public bool ExistINIFile()
        {
            return File.Exists(inipath);
        }

        /// <summary>获得相应文件名所有名称
        /// 
        /// </summary>
        /// <param name="srcPath">目录</param>
        /// <param name="sFileName">对应文件</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public List<string> fFileList(
            string srcPath)
        {
            List<string> fList = new List<string>();

            // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
            string[] fileList = Directory.GetFiles(srcPath);

            //'添加相同的文件
            foreach (string sItem in fileList)
            {
                if ("*.jpg *.bmp *.gif".IndexOf(sItem.Substring(sItem.Length - 3, 3)) > 0)
                {
                    fList.Add(sItem);
                }

            }

            return fList;
        }
    }
}

实际应用

读取:

string filePath = Application.StartupPath + @"Config\Conn.ini";

IniHelper ini = new IniHelper(filePath);

string Database = ini.IniReadValue("Connection", "Database");
string UserID = ini.IniReadValue("Connection", "UserID");
string Password = ini.IniReadValue("Connection", "Password");
string Server = ini.IniReadValue("Connection", "Server");
string Port = ini.IniReadValue("Connection", "Port");

写入:

IniHelper ini = new IniHelper(Application.StartupPath + @"\config.ini");

// 文件不存在时,先创建
if (!File.Exists(Application.StartupPath + @"\config.ini"))
{
    FileStream filest = new FileStream(Application.StartupPath + @"\config.ini", FileMode.OpenOrCreate, FileAccess.ReadWrite);
    filest.Close();
}

ini.IniWriteValue("Connection", "server", ".");
ini.IniWriteValue("Connection", "database", "testDB");
ini.IniWriteValue("Connection", "uid", "testUser");
ini.IniWriteValue("Connection", "pwd", "testPwd");

以上示例为Winform中读取与设置数据库连接的方法,实际应用可以在写入数据库配置前先给字符进行加密,读取时再解密,以防止数据库连接泄漏。

相关标签: ini文件读写 ini