ASP中FSO的神奇功能-使用FSO进行搜索
2023-06-13 09:13:46 时间
作者:甘冀平
你也许想:好,现在我知道如何写入文件了。但能做到更多一些吗?下面来试一试为web站点建立一个搜索功能。
建立搜索引擎的关键是递归。主要地,编写一段代码搜索目录下的文件,然后对所有的目录循环执行同样的代码。因
为不能确定总共有多少个子目录,所以必须一遍又一遍地执行搜索代码,直到结束。递归调用非常好!
下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。
DimobjFolder
DimstrSearchText
DimobjFSO
strSearchText=Request.Form("SearchText")<--Thesearchstring
"createtheFSOandFolderobjects
Setfso=Server.CreateObject("Scripting.FileSystemObject")
SetobjFolder=objFSO.GetFolder(Server.MapPath("/"))
SearchobjFolder
上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下:
FunctionSearch(objFolder)
DimobjSubFolder
"loopthrougheveryfileinthecurrent
folder
ForEachobjFileinobjFolder.Files
SetobjTextStream=objFSO.OpenTextFile(objFile.Path,1)<--ForReading
"readthefile"scontentsintoa
variable
strFileContents=objTextStream.ReadAll
"ifthesearchstringisinthefile,then
writealink
"tothefile
IfInStr(1,strFileContents,strSearchText,1)then
Response.Write"<AHREF=""/"&objFile.Name&_
""">"&objFile.Name&"</A><BR>"
bolFileFound=True
EndIf
objTextStream.Close
Next
"Here"stherecursionpart-foreach
"subfolderinthisdirectory,runtheSearchfunctionagain
ForEachobjSubFolderinobjFolder.SubFolders
SearchobjSubFolder
Next
EndFunction
为了能打开文件,FSO需要实际的文件路径,而不是web路径。比如,是c:inetpubwwwrootempindex.html,而不是
www.enfused.com/temp/index.html或者/temp/index.html。为了将后者转换为前者,使用Server.MapPath
("filename"),filename表示web路径名。
上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后
就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。
注意,随着文件和子目录数量的增加,搜索花费的时间也将增加。如果需要繁重的搜索工作,建议你采取其他的方
法,比如微软公司的索引服务器IndexServer。
你也许想:好,现在我知道如何写入文件了。但能做到更多一些吗?下面来试一试为web站点建立一个搜索功能。
建立搜索引擎的关键是递归。主要地,编写一段代码搜索目录下的文件,然后对所有的目录循环执行同样的代码。因
为不能确定总共有多少个子目录,所以必须一遍又一遍地执行搜索代码,直到结束。递归调用非常好!
下面来创建搜索页面。假设已经建立了一个HTML表单,用户在其中输入一个搜索字符串。
DimobjFolder
DimstrSearchText
DimobjFSO
strSearchText=Request.Form("SearchText")<--Thesearchstring
"createtheFSOandFolderobjects
Setfso=Server.CreateObject("Scripting.FileSystemObject")
SetobjFolder=objFSO.GetFolder(Server.MapPath("/"))
SearchobjFolder
上面的代码简单地初始化变量,Search函数执行搜索功能,描述如下:
FunctionSearch(objFolder)
DimobjSubFolder
"loopthrougheveryfileinthecurrent
folder
ForEachobjFileinobjFolder.Files
SetobjTextStream=objFSO.OpenTextFile(objFile.Path,1)<--ForReading
"readthefile"scontentsintoa
variable
strFileContents=objTextStream.ReadAll
"ifthesearchstringisinthefile,then
writealink
"tothefile
IfInStr(1,strFileContents,strSearchText,1)then
Response.Write"<AHREF=""/"&objFile.Name&_
""">"&objFile.Name&"</A><BR>"
bolFileFound=True
EndIf
objTextStream.Close
Next
"Here"stherecursionpart-foreach
"subfolderinthisdirectory,runtheSearchfunctionagain
ForEachobjSubFolderinobjFolder.SubFolders
SearchobjSubFolder
Next
EndFunction
为了能打开文件,FSO需要实际的文件路径,而不是web路径。比如,是c:inetpubwwwrootempindex.html,而不是
www.enfused.com/temp/index.html或者/temp/index.html。为了将后者转换为前者,使用Server.MapPath
("filename"),filename表示web路径名。
上面的代码将在你指定的初始目录下的文件夹的每一个子目录中执行,在这里,初始目录是指web根目录“/”。然后
就简单地打开目录下的每一个文件,看看其中是否包含指定的字符串,如果找到字符串就显示那个文件的链接。
注意,随着文件和子目录数量的增加,搜索花费的时间也将增加。如果需要繁重的搜索工作,建议你采取其他的方
法,比如微软公司的索引服务器IndexServer。
相关文章
- Linux常用命令:grep 搜索过滤 命令用法详解
- ASP如何连接MySQL数据库(asp怎么连接mysql)
- Redis查询:设定搜索条件(redis查询条件)
- ASP空间与MSSQL相结合,完美解决网站数据库存储与运行问题(asp空间mssql)
- 如何使用C ASP实现MySQL数据库连接(c asp连接mysql)
- 使用ASP连接MySQL数据库,轻松实现功能扩展(asp连mysql数据库)
- ASP如何使用代码登录MySQL数据库(asp登陆mysql代码)
- 如何使用ASP添加MySQL引用(asp添加mysql引用)
- 优雅的结合ASP与MySQL的SQL语句(asp和mysql语句)
- 错误ASP操作MySQL出现异常如何破解(asp取mysql出现)
- 数据库ASP连接Oracle数据库简单实现实时数据访问(asp连续oracle)
- 建立企业级应用ASP系统与Oracle技术配合的良好实践(asp系统oracle)
- ASP调用Oracle数据庫,实现完美编程体验(asp访问oracle)
- 使用ASP连接Oracle数据源的简便方式(asp数据源oracle)
- ASP使用三层架构asp中使用类
- asp.net使用jquery实现搜索框默认提示功能