一个ini类代替缓存使用


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值