asp.net 簡介
在現實世界中,人們經常希望能夠把某個文字檔的部分或全部內容儲存到一個 Web 網頁變數中。在經典的 ASP 中,只要簡單地使用 FileSystemObject 就能做到了。其實,在 ASPFAQs.com 中就有一個 FAQ 欄目專門討論 FileSystemObject 。
可是在 ASP.NET 中呢?FileSystemObject 當然還可以用,不過,經驗表明這麼做會嚴重影響伺服器效能。因此,最好還是使用 .NET 架構本身提供的類來讀取檔案。本文要介紹的是如何讀取文字檔;今後我還會介紹如何使用 .NET 架構類來讀取 XML 檔案。
開啟文字檔最簡單的途徑是調用 OpenText 方法,它將按照 UTF-8 (ASCII) 格式開啟文字檔。你還可以選擇通用的 Open 方法,以便指定檔案操作模式 (create/open/append/truncate) 、操作許可權 (read/write/read-write) 和檔案分享權限設定許可權了;可既然你只需要讀取文字檔,那麼相對簡單的 OpenText 方法也就足以應付了。
OpenText 方法返回一個 StreamReader 對象,只要訪問該對象就能從剛才開啟的檔案中讀取常值內容。因此,開啟檔案所用的 ASP.NET 代碼大致如下:
<%@ Import Namespace="System.IO" %>
<script language="vb" runat="server">
sub Page_Load(sender as Object, e as EventArgs)
'以“唯讀”方式開啟檔案
Dim FILENAME as String = Server.MapPath("Rand.txt")
'建立 StreamReader 類執行個體,準備讀取檔案內容
Dim objStreamReader as StreamReader
objStreamReader = File.OpenText(FILENAME)
...
While objStreamReader.Peek() <> -1
someString = objStreamReader.ReadLine()
'... do whatever else you need to do ...
End While
切記!關閉 StreamReader 對象!
當你讀完全部文本,並且不再操作此檔案時,千萬記住要使用 Close() 方法關閉 StreamReader 對象,以關閉此檔案。如果你忘記這麼做,則 ASP.NET 操作進程將保持對此檔案的唯讀鎖定狀態,因而當你換用其它帳號操作此檔案時將會遇到錯誤資訊 “access denied”(拒絕訪問) ;而且當你試圖刪除或覆蓋此檔案時也將遇到同樣的錯誤資訊;只不過 ASP.NET 本身對此檔案的操作卻不受影響。因此,一定要在完成操作之後關閉檔案。
附:完整的示範程式
<%@ Import Namespace="System.IO" %>
<script language="vb" runat="server">
sub Page_Load(sender as Object, e as EventArgs)
'以唯讀方式開啟一個檔案
Dim FILENAME as String = Server.MapPath("Rand.txt")
'執行個體化一個 StreamReader 對象用於讀取檔案
Dim objStreamReader as StreamReader
objStreamReader = File.OpenText(FILENAME)
'現在,讀入整個檔案的文本並儲存到一個字串裡
Dim contents as String = objStreamReader.ReadToEnd()
本文附帶了一個示範程式的原始碼。該程式簡單地開啟一個硬式編碼(hard-coded)文字檔,然後把其中的所有文本一次性儲存到指定字串裡,再把字串的值顯示在伺服器端的一個 Web 控制項 label 中。
你看,通過 ASP.NET 頁面讀取文字檔內容實在不難。雖然在文法上和經典 ASP 的 FileSystemObject 對象有些差異,但是學起來真的很容易。為了更好的掌握如何在 ASP.NET 中讀寫檔案,請務必閱讀 《ASP.NET: Tips, Tutorials, and Code》一書 (樣本見 http://www.4guysfromrolla.com/webtech/chapters/ASPNET2 )!