把下面的代码保存为INI.asp即可运行:
  1一个ini类代替缓存使用<%
  2一个ini类代替缓存使用'Power By Tim
  3一个ini类代替缓存使用'文件摘要:INI类
  4一个ini类代替缓存使用'文件版本:3.0 
  5一个ini类代替缓存使用'文本创建日期:2:17 2004-12-14
  6一个ini类代替缓存使用'================= 属性说明 ================
  7一个ini类代替缓存使用'INI.OpenFile = 文件路径(使用虚拟路径需在外部定义)
  8一个ini类代替缓存使用'INI.CodeSet  = 编码设置,默认为 GB2312
  9一个ini类代替缓存使用'INI.IsTrue   = 检测文件是否正常(存在)
 10一个ini类代替缓存使用'================ 方法说明 =================
 11一个ini类代替缓存使用'IsGroup(组名)            检测组是否存在
 12一个ini类代替缓存使用'IsNode(组名,节点名)            检测节点是否存在
 13一个ini类代替缓存使用'GetGroup(组名)            读取组信息
 14一个ini类代替缓存使用'CountGroup()            统计组数量
 15一个ini类代替缓存使用'ReadNode(组名,节点名)            读取节点数据
 16一个ini类代替缓存使用'WriteGroup(组名)            创建组
 17一个ini类代替缓存使用'WriteNode(组,节点,节点数据)      插入/更新节点数据
 18一个ini类代替缓存使用'DeleteGroup(组名)            删除组
 19一个ini类代替缓存使用'DeleteNode(组名,节点名)      删除节点
 20一个ini类代替缓存使用'Save()                  保存文件
 21一个ini类代替缓存使用'Close()                  清除内部数据(释放)
 22一个ini类代替缓存使用'===============================================
 23一个ini类代替缓存使用
 24一个ini类代替缓存使用
 25一个ini类代替缓存使用
 26一个ini类代替缓存使用Class INI_Class
 27一个ini类代替缓存使用'===============================================
 28一个ini类代替缓存使用     Private Stream            '// Stream 对象
 29一个ini类代替缓存使用     Private FilePath      '// 文件路径
 30一个ini类代替缓存使用     Public Content            '// 文件数据
 31一个ini类代替缓存使用     Public IsTrue            '// 文件是否存在
 32一个ini类代替缓存使用     Public IsAnsi            '// 记录是否二进制
 33一个ini类代替缓存使用     Public CodeSet            '// 数据编码
 34一个ini类代替缓存使用'================================================
 35一个ini类代替缓存使用     
 36一个ini类代替缓存使用     '// 初始化
 37一个ini类代替缓存使用     Private Sub Class_Initialize()
 38一个ini类代替缓存使用           Set Stream      = Server.CreateObject("ADODB.Stream")
 39一个ini类代替缓存使用           Stream.Mode      = 3
 40一个ini类代替缓存使用           Stream.Type      = 2
 41一个ini类代替缓存使用           CodeSet            = "gb2312"
 42一个ini类代替缓存使用           IsAnsi            = True
 43一个ini类代替缓存使用           IsTrue            = True
 44一个ini类代替缓存使用     End Sub
 45一个ini类代替缓存使用     
 46一个ini类代替缓存使用     
 47一个ini类代替缓存使用     '// 二进制流转换为字符串
 48一个ini类代替缓存使用     Private Function Bytes2bStr(bStr)
 49一个ini类代替缓存使用           if Lenb(bStr)=0 Then
 50一个ini类代替缓存使用                 Bytes2bStr = ""
 51一个ini类代替缓存使用                 Exit Function
 52一个ini类代替缓存使用           End if
 53一个ini类代替缓存使用           
 54一个ini类代替缓存使用           Dim BytesStream,StringReturn
 55一个ini类代替缓存使用           Set BytesStream = Server.CreateObject("ADODB.Stream")
 56一个ini类代替缓存使用           With BytesStream
 57一个ini类代替缓存使用                 .Type        = 2
 58一个ini类代替缓存使用                 .Open
 59一个ini类代替缓存使用                 .WriteText   bStr
 60一个ini类代替缓存使用                 .Position    = 0
 61一个ini类代替缓存使用                 .Charset     = CodeSet
 62一个ini类代替缓存使用                 .Position    = 2
 63一个ini类代替缓存使用                 StringReturn = .ReadText
 64一个ini类代替缓存使用                 .Close
 65一个ini类代替缓存使用           End With
 66一个ini类代替缓存使用           Bytes2bStr       = StringReturn
 67一个ini类代替缓存使用           Set BytesStream       = Nothing
 68一个ini类代替缓存使用           Set StringReturn = Nothing
 69一个ini类代替缓存使用     End Function
 70一个ini类代替缓存使用     
 71一个ini类代替缓存使用     
 72一个ini类代替缓存使用     '// 设置文件路径
 73一个ini类代替缓存使用     Property Let OpenFile(INIFilePath)
 74一个ini类代替缓存使用           FilePath = INIFilePath
 75一个ini类代替缓存使用           Stream.Open
 76一个ini类代替缓存使用           On Error Resume Next
 77一个ini类代替缓存使用           Stream.LoadFromFile(FilePath)
 78一个ini类代替缓存使用           '// 文件不存在时返回给 IsTrue
 79一个ini类代替缓存使用           if Err.Number<>0 Then
 80一个ini类代替缓存使用                 IsTrue = False
 81一个ini类代替缓存使用                 Err.Clear
 82一个ini类代替缓存使用           End if
 83一个ini类代替缓存使用           Content = Stream.ReadText(Stream.Size)
 84一个ini类代替缓存使用           if Not IsAnsi Then Content=Bytes2bStr(Content)
 85一个ini类代替缓存使用     End Property
 86一个ini类代替缓存使用     
 87一个ini类代替缓存使用     
 88一个ini类代替缓存使用     '// 检测组是否存在[参数:组名]
 89一个ini类代替缓存使用     Public Function IsGroup(GroupName)
 90一个ini类代替缓存使用           if Instr(Content,"["&GroupName&"]")>0 Then
 91一个ini类代替缓存使用                 IsGroup = True
 92一个ini类代替缓存使用           Else
 93一个ini类代替缓存使用                 IsGroup = False
 94一个ini类代替缓存使用           End if
 95一个ini类代替缓存使用     End Function
 96一个ini类代替缓存使用     
 97一个ini类代替缓存使用     
 98一个ini类代替缓存使用     '// 读取组信息[参数:组名]
 99一个ini类代替缓存使用     Public Function GetGroup(GroupName)
100一个ini类代替缓存使用           Dim TempGroup
101一个ini类代替缓存使用           if Not IsGroup(GroupName) Then Exit Function
102一个ini类代替缓存使用           '// 开始寻找头部截取
103一个ini类代替缓存使用           TempGroup = Mid(Content,Instr(Content,"["&GroupName&"]"),Len(Content))
104一个ini类代替缓存使用           '// 剔除尾部
105一个ini类代替缓存使用           if Instr(TempGroup,VbCrlf&"[")>0 Then TempGroup=Left(TempGroup,Instr(TempGroup,VbCrlf&"[")-1)
106一个ini类代替缓存使用           if Right(TempGroup,1)<>Chr(10Then TempGroup=TempGroup&VbCrlf
107一个ini类代替缓存使用           GetGroup = TempGroup
108一个ini类代替缓存使用     End Function
109一个ini类代替缓存使用     
110一个ini类代替缓存使用     
111一个ini类代替缓存使用     '// 检测节点是否存在[参数:组名,节点名]
112一个ini类代替缓存使用     Public Function IsNode(GroupName,NodeName)
113一个ini类代替缓存使用           if Instr(GetGroup(GroupName),NodeName&"="Then
114一个ini类代替缓存使用                 IsNode = True
115一个ini类代替缓存使用           Else
116一个ini类代替缓存使用                 IsNode = False
117一个ini类代替缓存使用           End if
118一个ini类代替缓存使用     End Function
119一个ini类代替缓存使用     
120一个ini类代替缓存使用     
121一个ini类代替缓存使用     '// 创建组[参数:组名]
122一个ini类代替缓存使用     Public Sub WriteGroup(GroupName)
123一个ini类代替缓存使用           if Not IsGroup(GroupName) And GroupName<>"" Then
124一个ini类代替缓存使用                 Content = Content & "[" & GroupName & "]" & VbCrlf
125一个ini类代替缓存使用           End if
126一个ini类代替缓存使用     End Sub
127一个ini类代替缓存使用     
128一个ini类代替缓存使用     
129一个ini类代替缓存使用     '// 读取节点数据[参数:组名,节点名]
130一个ini类代替缓存使用     Public Function ReadNode(GroupName,NodeName)
131一个ini类代替缓存使用           if Not IsNode(GroupName,NodeName) Then Exit Function
132一个ini类代替缓存使用           Dim TempContent
133一个ini类代替缓存使用           '// 取组信息
134一个ini类代替缓存使用           TempContent = GetGroup(GroupName)
135一个ini类代替缓存使用           '// 取当前节点数据
136一个ini类代替缓存使用           TempContent = Right(TempContent,Len(TempContent)-Instr(TempContent,NodeName&"=")+1)
137一个ini类代替缓存使用           TempContent = Replace(Left(TempContent,Instr(TempContent,VbCrlf)-1),NodeName&"=","")
138一个ini类代替缓存使用           ReadNode = ReplaceData(TempContent,0)
139一个ini类代替缓存使用     End Function
140一个ini类代替缓存使用     
141一个ini类代替缓存使用     
142一个ini类代替缓存使用     '// 写入节点数据[参数:组名,节点名,节点数据]
143一个ini类代替缓存使用     Public Sub WriteNode(GroupName,NodeName,NodeData)
144一个ini类代替缓存使用           '// 组不存在时写入组
145一个ini类代替缓存使用           if Not IsGroup(GroupName) Then WriteGroup(GroupName)
146一个ini类代替缓存使用           
147一个ini类代替缓存使用           '// 寻找位置插入数据
148一个ini类代替缓存使用           '/// 获取组
149一个ini类代替缓存使用           Dim TempGroup : TempGroup = GetGroup(GroupName)
150一个ini类代替缓存使用           
151一个ini类代替缓存使用           '/// 在组尾部追加
152一个ini类代替缓存使用           Dim NewGroup
153一个ini类代替缓存使用           if IsNode(GroupName,NodeName) Then
154一个ini类代替缓存使用                 NewGroup = Replace(TempGroup,NodeName&"="&ReplaceData(ReadNode(GroupName,NodeName),1),NodeName&"="&ReplaceData(NodeData,1))
155一个ini类代替缓存使用           Else
156一个ini类代替缓存使用                 NewGroup = TempGroup & NodeName & "=" & ReplaceData(NodeData,1& VbCrlf
157一个ini类代替缓存使用           End if
158一个ini类代替缓存使用           
159一个ini类代替缓存使用           Content = Replace(Content,TempGroup,NewGroup)
160一个ini类代替缓存使用     End Sub
161一个ini类代替缓存使用     
162一个ini类代替缓存使用     
163一个ini类代替缓存使用     '// 删除组[参数:组名]
164一个ini类代替缓存使用     Public Sub DeleteGroup(GroupName)
165一个ini类代替缓存使用           Content = Replace(Content,GetGroup(GroupName),"")
166一个ini类代替缓存使用     End Sub
167一个ini类代替缓存使用     
168一个ini类代替缓存使用     
169一个ini类代替缓存使用     '// 删除节点[参数:组名,节点名]
170一个ini类代替缓存使用     Public Sub DeleteNode(GroupName,NodeName)
171一个ini类代替缓存使用           Dim TempGroup
172一个ini类代替缓存使用           Dim NewGroup
173一个ini类代替缓存使用           TempGroup = GetGroup(GroupName)
174一个ini类代替缓存使用           NewGroup = Replace(TempGroup,NodeName&"="&ReadNode(GroupName,NodeName)&VbCrlf,"")
175一个ini类代替缓存使用           if Right(NewGroup,1)<>Chr(10Then NewGroup = NewGroup&VbCrlf
176一个ini类代替缓存使用           Content = Replace(Content,TempGroup,NewGroup)
177一个ini类代替缓存使用     End Sub
178一个ini类代替缓存使用     
179一个ini类代替缓存使用     
180一个ini类代替缓存使用     '// 替换字符[实参:替换目标,数据流向方向]
181一个ini类代替缓存使用     '      字符转换[防止关键符号出错]
182一个ini类代替缓存使用     '      [            --->      {(@)}
183一个ini类代替缓存使用     '      ]            --->      {(#)}
184一个ini类代替缓存使用     '      =            --->      {($)}
185一个ini类代替缓存使用     '      回车      --->      {(1310)}
186一个ini类代替缓存使用     Public Function ReplaceData(Data_Str,IsIn)
187一个ini类代替缓存使用           if IsIn Then
188一个ini类代替缓存使用                 ReplaceData = Replace(Replace(Replace(Data_Str,"[","{(@)}"),"]","{(#)}"),"=","{($)}")
189一个ini类代替缓存使用                 ReplaceData = Replace(ReplaceData,Chr(13)&Chr(10),"{(1310)}")
190一个ini类代替缓存使用           Else
191一个ini类代替缓存使用                 ReplaceData = Replace(Replace(Replace(Data_Str,"{(@)}","["),"{(#)}","]"),"{($)}","=")
192一个ini类代替缓存使用                 ReplaceData = Replace(ReplaceData,"{(1310)}",Chr(13)&Chr(10))
193一个ini类代替缓存使用           End if
194一个ini类代替缓存使用     End Function
195一个ini类代替缓存使用     
196一个ini类代替缓存使用     
197一个ini类代替缓存使用     '// 保存文件数据
198一个ini类代替缓存使用     Public Sub Save()
199一个ini类代替缓存使用           With Stream
200一个ini类代替缓存使用                 .Close
201一个ini类代替缓存使用                 .Open
202一个ini类代替缓存使用                 .WriteText Content
203一个ini类代替缓存使用                 .SaveToFile FilePath,2
204一个ini类代替缓存使用           End With
205一个ini类代替缓存使用     End Sub
206一个ini类代替缓存使用     
207一个ini类代替缓存使用     
208一个ini类代替缓存使用     '// 关闭、释放
209一个ini类代替缓存使用     Public Sub Close()
210一个ini类代替缓存使用           Set Stream = Nothing
211一个ini类代替缓存使用           Set Content = Nothing
212一个ini类代替缓存使用     End Sub
213一个ini类代替缓存使用     
214一个ini类代替缓存使用End Class
215一个ini类代替缓存使用
216一个ini类代替缓存使用
217一个ini类代替缓存使用Dim INI
218一个ini类代替缓存使用Set INI = New INI_Class
219一个ini类代替缓存使用INI.OpenFile = Server.MapPath("Config.ini")
220一个ini类代替缓存使用'========== 这是写入ini数据 ==========
221一个ini类代替缓存使用Call INI.WriteNode("SiteConfig","SiteName","Leadbbs极速论坛")
222一个ini类代替缓存使用Call INI.WriteNode("SiteConfig","Mail","leadbbs@leadbbs.com")
223一个ini类代替缓存使用INI.Save()
224一个ini类代替缓存使用'========== 这是读取ini数据 ==========
225一个ini类代替缓存使用Response.Write("站点名称:"&INI.ReadNode("SiteConfig","SiteName"))
226一个ini类代替缓存使用%>

相关文章: