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中读取与设置数据库连接的方法,实际应用可以在写入数据库配置前先给字符进行加密,读取时再解密,以防止数据库连接泄漏。
上一篇: Java 读写ini文件