打开文本文件最简单的途径是调用 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 )!