一种简便实效的配置文件读写方法

一种简便实效的配置文件读写方法

_ 声明:我的“文章”只适宜初学者参考。我对概念理解模糊,参考者只参考思路则可。 _

( 怕挨骂,声明在前 )

主要做法:

_ 第一步,将配置信息做一个简单的类。 _

要点:因为要用到序列化,而且是用 ** XmlSerializer ** 来序列化,所以要存到文件的变量信息都要声明为 ** Public ** , 要序列化的类用 **

  1<serializable()> ** 修饰。 
  2
  3示例:一个连接数据库的配置信息 
  4
  5'  配置信息 
  6
  7<serializable()> Public  Class  Item 
  8
  9'  初始默认值 
 10
 11Public  ID  As  Integer  = 0 
 12
 13Public  Server  As  String  = "(Local)" 
 14
 15Public  Database  As  String  = "NorthWind" 
 16
 17Public  Tusted  As  Boolean  =  True 
 18
 19Public  User  As  String  = "" 
 20
 21Public  Password  As  String  = "" 
 22
 23End  Class 
 24
 25_ 第二步:配置处理的类。  _
 26
 27说明:这个类是通用的。用到别的配置,你只需修改上面的配置信息类就可以了。它实现了存档和读取的功能,并转化为配置信息对象,操作起来较为方便。  你可以添加内容加密的处理。 
 28
 29<serializable()> Public  Class  Config 
 30
 31'  默认  ConnectionInfo  的  ID 
 32
 33Public  ID  As  Integer 
 34
 35'  必须是  Public,XmlSerializer  只对  Pulbic  变量作用 
 36
 37Public  Items  As  Item() 
 38
 39Private  m_Count  As  Integer  = 0 
 40
 41'  添加配置信息 
 42
 43Public  Sub  Add(  ByVal  ConnectionInfo  As  Item) 
 44
 45If  ConnectionInfo  Is  Nothing  Then  Exit  Sub 
 46
 47If  m_Count &gt; 0  Then 
 48
 49If  Not  Me  .ConnectionInfo(ConnectionInfo.ID)  Is  Nothing  Then 
 50
 51MsgBox(ID.ToString &amp; "  已存在  ") 
 52
 53Exit  Sub 
 54
 55End  If 
 56
 57End  If 
 58
 59ReDim  Preserve  Me  .Items(m_Count) 
 60
 61Me  .Items(m_Count) = ConnectionInfo 
 62
 63m_Count += 1 
 64
 65End  Sub 
 66
 67'  取指定  ID  的配置信息 
 68
 69Public  ReadOnly  Property  ConnectionInfo(  ByVal  ID  As  Integer  )  As  Item 
 70
 71Get 
 72
 73Dim  mItem  As  Item 
 74
 75Dim  i  As  Integer 
 76
 77For  i = 0  To  m_Count - 1 
 78
 79If  Me  .Items(i).ID = ID  Then 
 80
 81mItem =  Me  .Items(ID) 
 82
 83Exit  For 
 84
 85End  If 
 86
 87Next 
 88
 89Return  mItem 
 90
 91End  Get 
 92
 93End  Property 
 94
 95'  序列化并保存到指定文件 
 96
 97Public  Sub  SaveXmlFile(  ByVal  FileName  As  String  ) 
 98
 99If  Me  Is  Nothing  Then  Exit  Sub 
100
101Dim  XmlWriter  As  New  System.IO.StreamWriter(FileName,  False  ) 
102
103XmlWriter.Write(SerializeClass.GetXML(  Me  )) 
104
105XmlWriter.Close() 
106
107End  Sub 
108
109'  从指定文件读取反序列化转为对象 
110
111Public  Function  LoadXmlFile(  ByVal  FileName  As  String  )  As  Config 
112
113Dim  XmlReader  As  New  System.IO.StreamReader(FileName, System.Text.Encoding.Default) 
114
115Dim  mConfig  As  Config 
116
117mConfig =  CType  (SerializeClass.LoadXML(  GetType  (Config), XmlReader.ReadToEnd), Config) 
118
119XmlReader.Close() 
120
121mConfig.m_Count = mConfig.Items.Length 
122
123Return  mConfig 
124
125End  Function 
126
127End  Class 
128
129_ 就以上两步就可以了,下面这个类是用来序列化用的。  _
130
131'  这是用  XmlSerializer  序列化对象的类 
132
133Public  Class  SerializeClass 
134
135Public  Shared  Function  GetXML(  ByVal  mObject  As  Object  )  As  String 
136
137Dim  oSerializer  As  New  System.Xml.Serialization.XmlSerializer(mObject.GetType) 
138
139Dim  oStringWriter  As  New  System.IO.StringWriter 
140
141oSerializer.Serialize(oStringWriter, mObject) 
142
143Return  oStringWriter.ToString 
144
145End  Function 
146
147Public  Shared  Function  LoadXML(  ByVal  mClass  As  Type,  ByVal  XML  As  String  )  As  Object 
148
149Dim  oSerializer  As  New  System.Xml.Serialization.XmlSerializer(mClass) 
150
151Dim  oStringReader  As  New  System.IO.StringReader(XML) 
152
153Return  oSerializer.Deserialize(oStringReader) 
154
155End  Function 
156
157End  Class 
158
159**__ 以下是使用方法示例:  _ _ **
160
161** **
162
163'  测试存配置文件 
164
165Private  Sub  TestSaveConfig() 
166
167Dim  mConfig  As  Config =  New  Config 
168
169Dim  mItem  As  Item 
170
171mItem =  New  Item 
172
173mConfig.Add(mItem) 
174
175mItem =  New  Item 
176
177With  mItem 
178
179.ID = 1 
180
181.User = "Master" 
182
183.Password = "123456" 
184
185.Tusted =  False 
186
187End  With 
188
189mConfig.Add(mItem) 
190
191mConfig.SaveXmlFile(Application.StartupPath &amp; "\Config.xml") 
192
193End  Sub 
194
195'  测试读配置文件 
196
197Private  Sub  TestLoadConfig() 
198
199Dim  mConfig  As  Config =  New  Config 
200
201mConfig = mConfig.LoadXmlFile(Application.StartupPath &amp; "\Config.xml") 
202
203'  读取默认值的用户名 
204
205MsgBox(mConfig.Items(mConfig.ID).User) 
206
207'  不妨修改一下配置 
208
209mConfig.ID = 1 
210
211mConfig.ConnectionInfo(0).Server = "Server" 
212
213mConfig.ConnectionInfo(1).Database = "Master" 
214
215'  再存盘 
216
217mConfig.SaveXmlFile(Application.StartupPath &amp; "\Config.xml") 
218
219End  Sub</serializable()></serializable()></serializable()>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus