|
|
把下面的代码保存为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 %>
|
|