救急呀,速度,幫我全面介紹一下這個FSO到底怎么回事呀,怎么用。我學網頁制作的時候沒學過這個。今天經理讓我用FSO做一個東西,我還試用期呢,大家幫幫我呀。
熱心網友
ASP中FSO的神奇功能 FSO 模型對象 Drive Object:驅動器對象 供存取磁盤或者網絡驅動器 FileSystemObject Object:文件系統對象 供存取計算機的文件系統 Folder Object:文件夾對象 供存取文件夾的所有屬性 TextStream Object:文本流對象 供存取文件內容 你可以使用上面的對象做計算機上的任何事情,也包括破壞活動 ;-( 所以,請小心使用FSO。在web環境中,存儲信息是非常重要的,比如用戶信息,日志文件,等等。FSO提供了一個強大且簡單的方法高效率地保存數據。在這篇文章里面,著重討論FileSystemObject和TextStream對象。 FSO由微軟公司提供支持,對于非Windows系統,大概不能再使用ASP。 怎么樣使用FSO? 為了使用FSO來執行所有的工作,首先要創建對象,代碼就象下面這樣: 這樣就建立了FSO并且賦予變量fso,接著就可以使用熟悉的 thod語法來執行文件系統的操作〔查看Visual Basic文檔,獲取更多的關于對象和對象向導編程的知識〕。在這里,我們可以使用 thod 或者 perty,這些將在下面的例子中看到。 FSO模型位于由微軟提供的腳本運行時間DLL文件中,它是scrrun。dll。你可以在任何應用程序中引用這個DLL文件,比如MS Access,Word。 就是說,并非僅僅限制在ASP中應用它。 這里有一個簡要的FSO方法列表: FSO方法 CopyFile 拷貝一個或者多個文件到新路徑 CreateTextFile 創建文件并且返回一個TextStream對象 DeleteFile 刪除一個文件 OpenTextFile 打開文件并且返回TextStream對象,以便讀取或者追加 如果想了解完整的FSO方法與屬性,請查閱微軟MSDN。下面來看幾個例子。 假設你想創建一個簡單的留言簿,你可以建立一個數據庫,在其中存儲用戶的信息。然而,如果并不需要數據庫的強大功能,使用FSO來存儲信息將節省你的時間和金錢。并且,一些ISP也許限制了web上的數據庫應用。 假設你在一個表單中收集了一些用戶信息,這里是一個簡單表單HTML代碼: 再看看 p中處理表單的代碼: ") loop ’’ close and clean up ose set file = nothing set fso = nothing % 這里僅僅做了一個非常簡單的輸出,但是你可以根據情況包含表格或者DHTML表單信息。 如果已經正確地建立并寫入了文件,上面的小小循環將合適地列出數據庫中的每一個人的信息。ReadLine方法讀取1 行內容,直到遇到換行符,隨后的ReadLine調用將讀取下一行。AtEndOfStream是TextStream對象的屬性,它告訴我們何時 遇到文件的尾部。 假設由于某種原因,我們沒有正確地形成文件,如果一個用戶只有2行信息而不是3行,那么就會產生一些錯誤。我們 這里的循環取回文件中的下3行信息,如果沒有3行多的信息,就將出現如下的錯誤信息: Server object error ’’ASP 0177 : 800a003e’’ 所以,一定要添加一些錯誤處理代碼,以防文件中插入了多余的行或者少了必要的行信息。 上面討論了基本知識,然后說說權限許可的問題。FSO以創建它的用戶帳戶權限運行,換言之,如果有人從Internet 上訪問你的頁面,那么這個internet帳戶就創建FSO。如果以administrator的身份登錄計算機,并且登錄頁面,那么 administrator帳戶就創建了FSO。這是非常重要的,因為一定的帳戶擁有一定的權限,并且FSO需要一些權限從而能完整的 執行功能。 internet帳戶(IUSER_MachineName,MachineName是服務器的名字)一般只擁有讀權限,這意味著用戶將不能寫入留 言簿文件。然而,有幾個選擇可以繞過這個問題。 首先,也是很困難的,是要求用戶在填寫留言簿前登錄到服務器。然而,留言簿的要點是從匿名用戶處收集信息,如 果要求用戶登錄,就必須要知道他們是誰。因此,跳過這個選擇,看下一個。 第2個方法是創建一個目錄或者文件,IUSER_MachineName用戶對此有寫權限。這樣做可能開放了一些潛在的安全漏 洞,因為任何知道正確目錄并具備一定web技巧的人就能在服務器上填充內容。這是一個很嚴重的禁忌。所以你必須確認在 隱藏的場所保存了這些可寫目錄的信息,并且盡可能地將這些目錄設置在web目錄結構以外(比如在Windows下,這是一個 不在inetpub目錄下的一個目錄)。 你也許想:好,現在我知道如何寫入文件了。但能做到更多一些嗎?下面來試一試為web站點建立一個搜索功能。 建立搜索引擎的關鍵是遞歸。主要地,編寫一段代碼搜索目錄下的文件,然后對所有的目錄循環執行同樣的代碼。因 為不能確定總共有多少個子目錄,所以必須一遍又一遍地執行搜索代碼,直到結束。遞歸調用非常好! 下面來創建搜索頁面。假設已經建立了一個HTML表單,用戶在其中輸入一個搜索字符串。 Dim objFolder Dim strSearchText Dim objFSO strSearchText = Request。Form("SearchText") " & objFile。Name & "" bolFileFound = True End If objTextStream。Close Next ’’Here’’s the recursion part - for each ’’ subfolder in this directory, run the Search function again For Each objSubFolder in objFolder。SubFolders Search objSubFolder Next End Function 為了能打開文件,FSO需要實際的文件路徑,而不是web路徑。比如,是c:inetpubwwwroot ml, 而不是 或者 /temp/ ml。 為了將后者轉換為前者,使用Server。MapPath ("filename"), filename表示web路徑名。 上面的代碼將在你指定的初始目錄下的文件夾的每一個子目錄中執行,在這里,初始目錄是指web根目錄"/"。然后 就簡單地打開目錄下的每一個文件,看看其中是否包含指定的字符串,如果找到字符串就顯示那個文件的鏈接。 注意,隨著文件和子目錄數量的增加,搜索花費的時間也將增加。如果需要繁重的搜索工作,建議你采取其他的方 法,比如微軟公司的索引服務器Index Server。 到此,你對FSO可能已經有了很好的體會。讓我們再深入研究一步,來解決更復雜的難題。 首先,你可能希望對文件改名。為了跟蹤所有的文檔,你將要重新命名它們以便唯一,這樣就可以被系統容易地區 別。很不幸,FSO不允許簡單的文件改名操作,所以我們不得不修改一下。 FSO能力的不足在這里卻成了優勢,我們可以一次執行2步。首先,打開文件并讀入文件的內容。假設這里要創建一個 唯一的文件夾和一個唯一的文件來存儲文章。然而,因為文件夾的路徑每天都將改變,所以必須首先檢查是否文件夾已經 存在,如果不存在,就創建它。這在if not lderexists代碼段完成。然后,取得那個路徑,創建一個新的文件。新 文件建立完成后,刪除掉舊文件,這通過fso。DeleteFile來完成。 這2步就是:對文件改名,然后移動到一個更合適的目錄下。注意,在這里還可以對文件進行更多地操作,比如在寫 入新文件前進行一下內容的編輯。 FSO確實存在一些弱點 - 比如,它很難處理二進制文件,這包括Word文檔、許多圖形格式的文件和其他一些文件。然而你仍然可以用其他的方式操作這些文件 - 移動它們、刪除它們,等等。你不能做的就是對它們進行打開或者寫操作。 另外一個限制是對于文件長度的問題。當立刻讀寫一些內容時,所有的信息都存儲在內存中 - 內容越多,消耗的內存就越大。這將使每個工作都變得慢起來。所以,如果需要操作非常大的文件,或者大量的小文件時,考慮將文件分割成小塊,并且經常的清除內存。將應用程序融入進COM對象組件,也能大大地提高程序的速度。 同樣,你也不能使用FSO來管理權限以及文件、文件夾的屬性,執行安全加密的一個很好方法就是將前面提到的留言簿文件設置為只讀,在需要時再設置為可寫,然后再修改回來。這個方法經常在CGI和Perl使用,但是很不幸,還沒有令人滿意的方法來用FSO實現。 還能用FSO做什么? 在FSO中還有許多很棒的功能,但許多人沒有意識到。這些功能常常是在你感到做某些事情很難后才發現的,這時你經常要感嘆到:要是我早知道這個方法就好了! 。