zl程序教程

您现在的位置是:首页 >  其他

当前栏目

ASP中FSO的神奇功能-使用FSO进行搜索

搜索ASP 使用 功能 进行 神奇 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。