農公子網站建設公司專注企業網站建設,關鍵詞排名優化,長尾詞霸屏系統!
打開客服菜單
定制建站品牌網頁設計
南寧公司網站建設首頁 > 技術支持 > FSO是什么?它有何作用用途及使用缺陷?
FSO是什么?它有何作用用途及使用缺陷?
編輯 : 咪乐|直播|最新地址 易事特相关负责人表示,在国家宏观政策指引下,易事特将发挥在光伏发电领域的技术和产品优势,一如既往积极参与全国各地光伏扶贫项目建设,为国家扶贫事业贡献力量。

網站建設

時間 : 2021-09-27 10:10 瀏覽量 : 14

在ASP中,FSO的意思是File System Object,即文件系統對象。我們將要操縱的計算機文件系統,在這里是指位于web服務器之上。所以,確認你對此擁有合適的權限。理想情況下,你可以在自己的機器上建立一個web服務器,這樣就能方便地進行測試。如果運行于Windows平臺,請試一試微軟公司的免費個人Web服務器PWS。FSO對象包括 :驅動器對象(Drive Object)用來存取本地盤或網絡盤,文件系統對象(FielSystemObject 簡稱FSO)是用來存取文件系統,文件夾對象(Folder Object)用于存取文件夾的各種屬性 ,文本流對象(TextStream Object 簡稱TS)存取文件內容 。


在使用以上對象,你的確可以在一臺電腦上為所欲為,但同樣也可能會造成災難,所以在使用FSO的時候要注意安全,特別是在Web應用中,Web服務器中會存儲諸如用戶信息,日志文件等等重要信息,更要格外小心。如何使用FSO? 要開始干“壞事”之前,首先要學會建立FSO。如果你曾經在ASP中創建過對象,那么這事好辦: <% Set fso = Server.CreateObject("Scripting.FileSystemObject") %> 。現在我們已經建立了FSO,并賦值給變量fso,接下來就可以使用我們熟悉的object.method方法來使用它了(如果你對對象的操作不熟悉,請自己去補課,這里恕不奉陪)。

seo優化技術

在下面的例子中,主要使用的是fso.method和fso.property。 (FSO模塊來自微軟提供的腳本運行庫scrrun.dll中,許多應用系統都會調用它,例如Access,Word等等,并非專為ASP應用開發。) 下面是我們要用到的部分FSO方法: CopyFile 拷貝一個或多個文件 ,CreateTextFile 創建一個文件并返回一個TS對象 ,DeleteFile 刪除一個文件 ,OpenTextFile 打開一個文件并返回一個可用于讀和添加的TS對象。 要獲得完整的FSO方法,請參看MSDN,下面看個例子吧。好,現在我們的guestbook里已經存儲了不少用戶的信息了,如果這時一個用戶想看看我們訪客的信息,我們得把信息再還原出來。由于不是數據庫,得自己動手來解決分段問題。看看test.txt,每三行就是一個用戶的信息,好辦: 


<% 
' 建立fso對象 
set fso = Server.Createobject("Scripting.FileSystemObject") 
path = "c:temptest.txt" 
'打開文件 
set file = fso.opentextfile(path, 1) <-- 用于讀 
do until file.AtEndOfStream 
Response.write("Name: " & file.ReadLine & " ") 
Response.write("Home Page: " & file.ReadLine & " ") 
Response.write("Email: " & file.ReadLine & "<p>") 
loop 
' 關閉并清除 
file.close 
set file = nothing 
set fso = nothing 

%> 


(這里我們只是將信息簡單輸出,你可以根據實際情況作調整,包括輸出到表格和DHTML form中。) ReadLine方法用于從文件中讀取一行,下次調用ReadLine方法將讀取下一行。AtEndOfStream是TS對象的一個屬性,讓你知道是否到達文件結尾。 假設由于某種原因文件有問題,例如某個用戶只有兩行,那么我們會得到以下錯誤信息: Server object error 'ASP 0177 : 800a003e' ,所以加入一些錯誤處理代碼是必要的。現在我們已經對FSO有一些基本認識了,是時候來討論一下FSO的權限問題。FSO的讀取權限就是創建FSO的賬號所擁有的權限。如果某人從Internet上使用這個頁面,那么創建FSO的就是Internet賬號。


如果你用administrator本機登錄并訪問頁面,那么建立的FSO就擁有administrator的權限。 Internet賬號(IUSER_機器名)通常只有讀權限,這意味著用戶永遠無法寫guestbook文件。所以必須想辦法解決。 第一個辦法,是讓用戶首先要用一個有寫權限的賬號登錄。但實際上所有從Internet訪問的用戶都是以anonymous登錄,所以這個方法比較難實現。 第二個方法是建立一個允許賬號為 IUSER_機器名 的用戶讀寫的目錄。但這樣可能會帶來安全漏洞。如果這個目錄讓黑客知道了,就可以往里面寫一些代碼并通過某種方式運行它,那你就慘了。所以最好將這個目錄建立在Web路徑之外(也就是inetpub路徑之外)。 

seo優化技術2

現在讓我們來做更進一步的工作,用FSO在我們的Web站點上實現search功能,建立搜索引擎的關鍵是遞歸。 首先來建立搜索頁面。假設我們已經給用戶提供了一個輸入搜索字符串的頁面。 
Dim objFolder 
Dim strSearchText 
Dim objFSO 
strSearchText = Request.Form("SearchText") <-- 搜索字符串 
' 建立 FSO 和文件夾對象 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder(Server.MapPath("/")) 

Search objFolder 


上面的代碼只是進行了一些變量初始化工作,真正的serach工作由下面這個Search函數執行。 


Function Search(objFolder) 
Dim objSubFolder 
'循環搜尋當前文件夾中的每個文件 
For Each objFile in objFolder.Files 
Set objTextStream = objFSO.OpenTextFile(objFile.Path,1) <-- For Reading 
'把文件內容讀入一個變量 

strFileContents = objTextStream.ReadAll 

seo優化技術3

'如果在文件中找到該字符串,寫個指到該文件的鏈接 
If InStr(1, strFileContents, strSearchText, 1) then 
Response.Write "<A href="/oblog3/"/" & objFile.Name &""">" & objFile.Name & "</A><BR>" 
bolFileFound = True 
End If 
objTextStream.Close 

Next 


'以下是遞歸部分 
' 如果其中有子目錄,再調用Search函數 
For Each objSubFolder in objFolder.SubFolders 
Search objSubFolder 
Next 

End Function 

南寧公司網站建設

該程序會自動搜索Web root目錄以下的所有子目錄,還不錯吧? (FSO要使用物理絕對路徑,而不是Web Path的相對路徑。例如,要打開的是c:inetpubwwwroottempindex.html,而不能是www.enfused.com/temp/index.html 或 /temp/index.html。要將后一種路徑轉換為物理絕對路徑,使用Server.MapPath("filename")。) FSO還是存在一些弱點。例如,它在處理二進制文件的時候就不那么方便。對于象MS Word文檔,圖像等許多文件,你只能執行移動,刪除等操作,而不能打開,讀/寫。當然,FSO提供了另外一套操作它們的方法(具體請參考MSDN),但始終不如我們慣用的open方法那么順手。 


另一個不足與文件大小有關。由于FSO操作需要經常地將文件內容讀入內存,文件有多大,就需要多少內存,所以如果你要處理大文件或一大堆小文件的話,內存的開銷會很可觀,可能會對系統運行速度有影響。解決辦法是將大文件分段處理,并記住經常地清除內存(把變量設為null或"",set 對象=nothing)。 此外,FSO不能改變文件和文件夾的屬性。例如,在建立guestbook的例子中,其實有一個安全機制我們沒有實現,就是將保存信息的文件的屬性設為只讀,只有在更新的時候才臨時改為可寫,寫完后再改回只讀,許多用CGI或Perl寫的guestbook程序都有這種功能,可惜用FSO無法實現該功能。 

南寧公司網站建設3

  • 超低建站費用

  • 具備營銷能力

  • 強大SEO功能

  • 貼心售后技術支持

百度