利用ASP操纵配置文件

作者:chilleen 来源:千一网络(原创) 日期:2006-2-19

这里所说的配置文件,并不是 Windows 的 Ini 文件,而是我们用ASP脚本对某一系统进行的配置,是按文件用途来定义,不是按文件格式来定义。

比如有一个内容管理系统,其配置文件为:
<%
siteName = "***"
%>
我们应用这个内容管理系统时,应该把 siteName 改成我们自己网站的名字,我们可以利用如下的代码在内容管理系统中增加这个功能。有人会说,为什么不把这些配置文件存入数据库,就用不着下面的这些函数了呀。是的,不过配置值是经常被读取的,如果直接写在 ASP 里面,获取配置值时,直接调用变量就可以了,而存入数据库的话要连接数据库、打开数据库、读取数据库……,很麻烦,效率也不高。


<%
'重新设置配置文件中变量的值
'fso FileSystemObject对象
'fileName 配置文件名,带路径,如"D:\web\config.asp"
'varName 变量名称
'varValue 新的变量值
'varType 变量类型,0表示数字,1表示日期,其它值表示文本
'设置成功返回true,设置失败返回false
'变量只能是在一行的开头(允许变量之前有空格)
'变量忽略大小写,但新设置之后的变量大小写按varName写入
'如果变量之后有注释或其它语句,则注释或其它语句会被删除
function SetIniValue(fso, fileName, varName, varValue, varType)
    '默认返回失败
    SetIniValue = false
   
    on error resume next
    dim f, varArr, i
   
    '读数据
    set f = fso.OpenTextFile(fileName, 1, false) '第二个参数1表示只读,第三个参数false表示文件不存在时不创建
    varArr = Split(f.ReadAll(), vbcrlf)
    f.Close
    set f = nothing
    if err.number <> 0 then
        err.clear
        exit function
    end if
   
    '分析并设置变量
    for i=0 to UBound(varArr)
        if InStr(1, Trim(varArr(i)), varName&" =", 1) = 1 or _
           InStr(1, Trim(varArr(i)), varName&"=", 1) = 1 then
            '变量已经找到
            if varType = 0 then
                varArr(i) = varName & " = " & varValue
            elseif varType = 1 then
                varArr(i) = varName & " = #" & varValue & "#"
            else
                varArr(i) = varName & " = """ & Replace(varValue, """", """""") & """"
            end if
           
            set f = fso.OpenTextFile(fileName, 2, false) '第二个参数2表示以写的模式打开文件
            f.Write(Join(varArr, vbcrlf)) 'Join将数组以vbcrlf(回车换行符)连接起来,返回一个字符串
            f.Close
            set f = nothing
           
            if err.number = 0 then
                SetIniValue = true
            end if
           
            exit for
        end if
    next
end function

'应用方法
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
response.Write(SetIniValue(fso, "E:\cfTea_com\wwwroot\config.asp", "siteName", "千一网络", 2))
set fso = nothing
%>

相关文章