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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226
