111,131
社区成员
发帖
与我相关
我的任务
分享
public class IniFile
{
/// <summary>
/// 读取INI文件专用类
/// </summary>
private Hashtable iniFile = new Hashtable();
public int Count { get { return iniFile.Count; } }
public string this[string IndexKey] { get { return iniFile[IndexKey].ToString(); } }
/// <summary>
/// 读取指定INI文件中的配置信息
/// </summary>
/// <param name="file">配置文件的完整路径名</param>
/// <param name="section">配置文件中的节名</param>
public IniFile(string file, string section)
{
string Section = "[" + section + "]";
LoadIniFile(file, Section);
//如果SpecialIniFilePath不为空,则从SpecialIniFilePath指定的文件中读取配置信息
if (iniFile.Count>0 && iniFile.Contains("SpecialIniFilePath"))
{
string path = this["SpecialIniFilePath"].Trim();
if (path != "") LoadIniFile(path, Section);
}
}
private void LoadIniFile(string filePath, string Section)
{
try
{
StreamReader sr = new StreamReader(filePath, System.Text.Encoding.Default);
string readLine = null;
bool readEnd = false;
string[] keyWord;
while ((readLine = sr.ReadLine()) != null)
{
if (readLine == Section) //是指定的节,则开始读取配置信息
{
while ((readLine = sr.ReadLine()) != null)
{
if (readLine != "") //跳过空行
{
if (readLine.Substring(0, 1) == "[") //是另一新节,则结束本次的读取
{
readEnd = true;
break;
}
keyWord = readLine.Split('=');
iniFile[keyWord[0].Trim()] = keyWord[1];
}
}
}
if (readEnd == true) break;
}
sr.Close();
}
catch
{
iniFile.Clear();
}
}
}
IniFile ini = new IniFile(System.Windows.Forms.Application.StartupPath + @"\Appcfg.ini", "Appcfg");
if (ini.Count>0)
{
_server = ini["Server"];
_database = ini["Database"];
_uid = ini["UID"];
_uid = Crypt.RndDecrypt("uid", _uid); //解密
_pwd = ini["PWD"];
_pwd = Crypt.RndDecrypt("pwd", _pwd); //解密
_timeout = ini["Timeout"];
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
using System.Data;
public class class1
{
[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);
//对ini文件进行写操作的函数
public void IniWriteValue(string Section, string Key, string Value, string filepath)
{
WritePrivateProfileString(Section, Key, Value, filepath);
}
//对ini文件进行读操作的函数
public string IniReadValue(string Section, string Key, string filepath)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp,
255, filepath);
return temp.ToString();
}
}
class test
{
static void Main()
{
string db;
class1 c=new class1();
c.IniWriteValue("Database","Database","bbbbb",@"d:\config.ini");
db=c.IniReadValue("Database","Database",@"d:\config.ini");
Console.WriteLine(db);//我这里输出结果是bbbbb,对的 不知道你错哪了
// db =IniReadValue("Database","Database",@"d:\config.ini");
// Console.WriteLine(db);
// userid=IniReadValue("Database","Userid",@"d:\config.ini");
// pwd=IniReadValue("Database","Dbpass",@"d:\config.ini");
}
}int i = GetPrivateProfileString(Section, Key, "", temp,
255, filepath); ??为什么要用个int i 呢?[DllImport("kernel32")]//读取INI文件
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);