C# 读写ini文件

 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 }
posted @ 2012-08-30 20:38  Clin  阅读(243)  评论(0编辑  收藏  举报