1 using System;
2 using System.Text;
3 using System.IO;
4 using System.Runtime.InteropServices;
5
6 public class IniFile{
7 public string path;
8
9 [DllImport("kernel32")]//返回0表示失败,非0为成功
10 private static extern long WritePrivateProfileString(string section, string key,
11 string val, string filePath);
12
13 [DllImport("kernel32")]//返回取得字符串缓冲区的长度
14 private static extern long GetPrivateProfileString(string section, string key,
15 string defVal, StringBuilder retVal, int size, string filePath);
16
17 public IniFile(string fullPath){
18 if (!File.Exists(fullPath)){
19 //文件不存在,建立文件
20 System.IO.StreamWriter sw = new System.IO.StreamWriter(fullPath, false, System.Text.Encoding.Default);
21 try{
22 sw.Write("#配置文件");
23 sw.Close();
24 }
25 catch{
26 throw (new ApplicationException("Ini文件不存在"));
27 }
28 }
29 path = fullPath;
30 }
31
32 //ini 文件读取值 注意要是没有值返回的是个空串而不是null
33 public string Get(string section, string key){
34 if (File.Exists(this.path)){
35 int readLength = 256;
36 StringBuilder data = new StringBuilder(readLength);
37 GetPrivateProfileString(section, key, "", data, readLength, this.path);
38 return data.ToString();
39 }
40 else {
41 return string.Empty;
42 }
43 }
44
45 //ini 文件写值 value 为 string类型时
46 public bool Set(string section, string key, string value){
47 if (File.Exists(this.path)) {
48 long opState = WritePrivateProfileString(section, key, value, this.path);
49 if (opState != 0){
50 return true;
51 }
52 }
53 return false;
54 }
55
56 //ini 文件写值 value 为 int类型时
57 public bool Set(string section, string key, int value){
58 if (File.Exists(this.path)){
59 string strValue = string.Format("%d", value);
60 long opState = WritePrivateProfileString(section, key, strValue, this.path);
61 if (opState != 0){
62 return true;
63 }
64 }
65 return false;
66 }
67 }