zoukankan      html  css  js  c++  java
  • 一个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
     26Class 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(10Then 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(10Then 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     
    214End Class
    215
    216
    217Dim INI
    218Set INI = New INI_Class
    219INI.OpenFile = Server.MapPath("Config.ini")
    220'========== 这是写入ini数据 ==========
    221Call INI.WriteNode("SiteConfig","SiteName","Leadbbs极速论坛")
    222Call INI.WriteNode("SiteConfig","Mail","leadbbs@leadbbs.com")
    223INI.Save()
    224'========== 这是读取ini数据 ==========
    225Response.Write("站点名称:"&INI.ReadNode("SiteConfig","SiteName"))
    226%>
  • 相关阅读:
    算法导论读书笔记(未完成)
    工作心理学(未完成)
    面试疑难点解析
    aop难点解析。
    Mybatis框架解析之Builder解析
    HashMap原理总结
    编程基础的重要性(程序员之路)
    Java HashMap详解
    Java源码分析系列之HttpServletRequest源码分析
    JFinal源码 分析之 Core包分析
  • 原文地址:https://www.cnblogs.com/Dicky/p/174408.html
Copyright © 2011-2022 走看看