.Net平台开发已经全面展开,微软为我们提供了非常庞大的.Net类库,程序员手中的武器也比以往任何时候来的都要先进。就拿桌面程序配置信息的保存来说,.Net框架为我们准备了三条路径:
1、将信息放置在资源中,即保存在Settings.settings中,在运行时从资源中检索;
2、保存在App.config文件中,App.config文件其实就是xml文件,以xml标准架构保存配置信息;
3、将配置信息保存在注册表中,即使用 Registry 类。
这三种方法在.Net下都被原生的支持,只需些许代码就能很好的对配置信息进行存取。其实,资深程序员应该非常清楚,早先在Windows下存取程序配置信息的地方是在*.ini文件中,譬如控制早期Windows启动参数的配置文件即是win.ini。*.ini文件就是纯文本文件,将程序配置信息放置在文本文件中好处其实也蛮多的:
1、双击*.ini文件即可用记事本打开并修改之;
2、当程序位置移动或重新部署时,只需将附带的*.ini文件一起拷贝,那么配置信息也被保留下来。
在MSDN中找了找关于.Net框架如何支持INI文件的东西,结果却并不乐观。也许是出于安全考虑,微软放弃了INI存取配置信息的方式?!这么一来我们存取*.ini文件就需要调用Win32 API了。无论怎么样,在某些场合使用INI文件绝对会事半功倍。
我们以保存和读取窗体位置及大小为例演示如何存取*.ini文件,核心代码如下:
using System.Runtime.InteropServices;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string inifilename);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder rtnVal, int size, string inifilename);
private string IniFileName = "";
public void WriteString(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, IniFileName);
}
public string ReadString(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, IniFileName);
return temp.ToString();
}
public Form1()
{
InitializeComponent();
IniFileName = Application.StartupPath + "\\Test.ini";
this.Top = Convert.ToInt32((ReadString("Location", "Top").ToString()));
this.Left = Convert.ToInt32((ReadString("Location", "Left").ToString()));
this.Width = Convert.ToInt32((ReadString("Size", "Width").ToString()));
this.Height = Convert.ToInt32((ReadString("Size", "Height").ToString()));
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
WriteString("Location", "Top", this.Top.ToString());
WriteString("Location", "Left", this.Left.ToString());
WriteString("Size", "Width", this.Width.ToString());
WriteString("Size", "Height", this.Height.ToString());
}
本文没有包含容错代码,就此代码网友务必在程序运行文件夹下放置Test.ini文件,其内容如下:
[Location]
Top = 0
Left = 0
[Size]
Width = 200
Height = 100
该示例在Windows XP SP3 + Visual Studio 2008 SP1 下编译调试通过。
1、将信息放置在资源中,即保存在Settings.settings中,在运行时从资源中检索;
2、保存在App.config文件中,App.config文件其实就是xml文件,以xml标准架构保存配置信息;
3、将配置信息保存在注册表中,即使用 Registry 类。
这三种方法在.Net下都被原生的支持,只需些许代码就能很好的对配置信息进行存取。其实,资深程序员应该非常清楚,早先在Windows下存取程序配置信息的地方是在*.ini文件中,譬如控制早期Windows启动参数的配置文件即是win.ini。*.ini文件就是纯文本文件,将程序配置信息放置在文本文件中好处其实也蛮多的:
1、双击*.ini文件即可用记事本打开并修改之;
2、当程序位置移动或重新部署时,只需将附带的*.ini文件一起拷贝,那么配置信息也被保留下来。
在MSDN中找了找关于.Net框架如何支持INI文件的东西,结果却并不乐观。也许是出于安全考虑,微软放弃了INI存取配置信息的方式?!这么一来我们存取*.ini文件就需要调用Win32 API了。无论怎么样,在某些场合使用INI文件绝对会事半功倍。
我们以保存和读取窗体位置及大小为例演示如何存取*.ini文件,核心代码如下:
using System.Runtime.InteropServices;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string inifilename);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder rtnVal, int size, string inifilename);
private string IniFileName = "";
public void WriteString(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, IniFileName);
}
public string ReadString(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, IniFileName);
return temp.ToString();
}
public Form1()
{
InitializeComponent();
IniFileName = Application.StartupPath + "\\Test.ini";
this.Top = Convert.ToInt32((ReadString("Location", "Top").ToString()));
this.Left = Convert.ToInt32((ReadString("Location", "Left").ToString()));
this.Width = Convert.ToInt32((ReadString("Size", "Width").ToString()));
this.Height = Convert.ToInt32((ReadString("Size", "Height").ToString()));
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
WriteString("Location", "Top", this.Top.ToString());
WriteString("Location", "Left", this.Left.ToString());
WriteString("Size", "Width", this.Width.ToString());
WriteString("Size", "Height", this.Height.ToString());
}
本文没有包含容错代码,就此代码网友务必在程序运行文件夹下放置Test.ini文件,其内容如下:
[Location]
Top = 0
Left = 0
[Size]
Width = 200
Height = 100
该示例在Windows XP SP3 + Visual Studio 2008 SP1 下编译调试通过。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14325734/viewspace-536281/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14325734/viewspace-536281/