明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP檢索網(wǎng)站指定目錄文件的算法與應(yīng)用方向

[摘要]在我們?cè)S多網(wǎng)站中存在這樣一個(gè)問題,就是鏈接的維護(hù)更新,這是一項(xiàng)工作量很大的工作,若不是的專門工作人員進(jìn)行維護(hù)的大型網(wǎng)站,普通站點(diǎn)的站點(diǎn)更新維護(hù)工作基本上都成了一個(gè)很令人頭疼的問題,特別是在沒有很多人手的情況下,要經(jīng)常維護(hù)更新鏈接更是討厭,因?yàn)檫@項(xiàng)工作沒有多少創(chuàng)意,卻很耗時(shí),而JACK顯然不是那種喜...
在我們?cè)S多網(wǎng)站中存在這樣一個(gè)問題,就是鏈接的維護(hù)更新,這是一項(xiàng)工作量很大的工作,若不是的專門工作人員進(jìn)行維護(hù)的大型網(wǎng)站,普通站點(diǎn)的站點(diǎn)更新維護(hù)工作基本上都成了一個(gè)很令人頭疼的問題,特別是在沒有很多人手的情況下,要經(jīng)常維護(hù)更新鏈接更是討厭,因?yàn)檫@項(xiàng)工作沒有多少創(chuàng)意,卻很耗時(shí),而JACK顯然不是那種喜歡花費(fèi)大量時(shí)間在一件沒創(chuàng)意的事情上的那種人,與是,JACK想出了一個(gè)ASP的程序原型,讓它來完成我們所討厭的工作吧!
        現(xiàn)在我們假設(shè)你有這樣一項(xiàng)網(wǎng)站維護(hù)任務(wù),就是要把每個(gè)月的經(jīng)濟(jì)評(píng)論分門別類地鏈接起來供大家查看,這些評(píng)論涉及了經(jīng)濟(jì)運(yùn)行的各個(gè)方面,可能有國(guó)內(nèi)生產(chǎn)總值的,有物價(jià)指數(shù)的,有工業(yè)發(fā)展情況的,并且它們有一個(gè)共同的特征,就是他們的文件名就代表了各自評(píng)論的內(nèi)容,例:《XX市1999年國(guó)內(nèi)生產(chǎn)總值完成情況分析》,在這么多合適的假設(shè)下(嘻,假設(shè)幾乎多過了薩繆爾森的經(jīng)濟(jì)學(xué)了。,我們偷賴的機(jī)會(huì)來了!我們只要把這些文件拷入評(píng)論這個(gè)目錄相應(yīng)的子目錄,然后寫一個(gè)ASP頁面,它所完成的功能就是檢索指定目錄下面的文件,并檢索結(jié)果做成可供點(diǎn)擊的鏈接,那么我們應(yīng)該怎么寫呢?
      很簡(jiǎn)單,我們只要讓ASP給出指定目錄下的文件名集合,并遍歷這個(gè)集合,把集合的每個(gè)元素做成相應(yīng)的鏈接供大家選擇就行啦!另外,若要在全部經(jīng)濟(jì)類別內(nèi)查詢所有含有某特征字符串的文件名的文件呢?小CASE啦!你只要把檢索文件的函數(shù)放入到一個(gè)遞歸的目錄檢索函數(shù)中就行啦。ㄎ,不要告訴我你不會(huì)遞歸啊。
      這樣,我們同樣可以寫出一個(gè)點(diǎn)歌系統(tǒng)(嘻,我喜歡聽MP3)把歌手做成目錄名,把歌曲加上中文名稱,一切就OK啦!想聽?zhēng)А皭邸钡母?OK!打入愛字!你就能找出所有帶愛的歌了。ū热缯f:愛你愛到骨頭里!嘻,排骨樂隊(duì)!JACK主唱。
      另外,你加上擴(kuò)展代碼(刪除指定文件的代碼),若配合UPLOAD的ASP代碼,你甚至可以寫出一個(gè)遠(yuǎn)程的WEB維護(hù)系統(tǒng)呢!當(dāng)然,這種事情JACK是不做的!ASP不夠完美,對(duì)二進(jìn)制的文件讀寫無能為力!所以只能操作文本文件,嘻嘻,美夢(mèng)泡湯了?不要緊,用VC啦!寫ISAPI能做到呢!

   下面的代碼,由于注釋很完整(JACK一下午不上網(wǎng)才寫出來的呢!嘻,不知又有多少M(fèi)M在CHAT里等我等得心痛了呢。揖筒欢嗾f了,請(qǐng)大家自己分析啦!
<%
'從FORM變量集得到要查詢的文件名稱所要包含的字符串
data=request.form("search_data")
'調(diào)用函數(shù)查詢目標(biāo)查詢目錄下的所有子目錄(所有子樹)
'函數(shù)調(diào)用的規(guī)則:search_folder(要查詢的字符串,查詢目標(biāo)的虛擬絕對(duì)路徑,查詢目標(biāo)的真實(shí)絕對(duì)路徑)
p=search_folder(data,"http://jack/cgi-bin","c:\webshare\wwwroot\cgi-bin")
%>
<script language="vbscript"  RUNAT=SERVER>
'目錄檢索函數(shù)
function search_folder(search_data,v_path,c_path)
dim file_system,cur_folder,sub_folders,sub_files
'確定查詢字符串有效非空
if not isempty(search_data) and len(search_data)>0 then
'建立文件系統(tǒng)對(duì)象
set file_system=createobject("scripting.filesystemobject")
'建立建立當(dāng)前目錄對(duì)象
set cur_folder=file_system.getfolder(c_path)
'建立當(dāng)前目錄的子目錄對(duì)象集合
set sub_folders=cur_folder.subfolders
'對(duì)子目錄集合進(jìn)行遍歷
for each each_sub_folder in sub_folders
'確定子目錄的屬性為普通子目錄
if each_sub_folder.attributes=16 then
'得到當(dāng)前的子虛擬絕對(duì)路徑與真實(shí)絕對(duì)路徑
'注:此程序默認(rèn)子目錄與子虛擬目錄為同一級(jí)別且名稱一致.
sub_v_path=v_path&"/"&each_sub_folder.name
sub_c_path=c_path&""&each_sub_folder.name
'調(diào)用文件檢索函數(shù)對(duì)當(dāng)前子目錄下的文件進(jìn)行字符串匹配檢索
p=search_file(search_data,sub_v_path,sub_c_path)
'遞歸檢索當(dāng)前子目錄的下一級(jí)目錄
p=search_folder(search_data,sub_v_path,sub_c_path)
end if
next
'清除所有服務(wù)器端對(duì)象
set each_sub_folder=nothing
set sub_folders=nothing
set cur_folder=nothing
set file_system=nothing
end if
end function
'********************************
'文件匹配檢索函數(shù)
function search_file(search_data,v_path,c_path)
dim file_system,sub_files,sub_file_v_path,sub_out_v_path
'確認(rèn)路徑不為空
if not isempty(c_path) then
set file_system=createobject("scripting.filesystemobject")
set cur_folder=file_system.getfolder(c_path)
'建立檢索目錄下的文件對(duì)象集合
set sub_files=cur_folder.files
'遍歷文件對(duì)象集合
for each each_file in sub_files
'匹配字符串與文件名
if instr(each_file.name,search_data)<>0 then
'建立可用鏈接,輸出匹配文件
sub_file_v_path=v_path&"/"&each_file.name
'替換路徑及文件名中可能出現(xiàn)的空格,以便WEB能正常確定路徑
sub_out_v_path=Replace(sub_file_v_path," ","%20")
response.write("<p><a href="&sub_out_v_path&">"&sub_file_v_path&"</a>")
end if
next
set sub_out_v_path=nothing
set sub_file_v_path=nothing
set each_file=nothing
set sub_files=nothing
set file_system=nothing
end if
end function
</script>