• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

在ASP.NET页中读取文本文件

发布: 2008-10-13 12:01 | 作者: 不详 | 来源: ProgramFan | 查看: 1982次 | 进入软件测试论坛讨论

领测软件测试网 一、简介

  在现实世界中,人们经常希望能够把某个文本文件的部分或全部内容保存到一个 Web 网页变量中。在经典的 ASP 中,只要简单地使用 FileSystemObject 就能做到了。其实,在 ASPFAQs.com 中就有一个 FAQ 栏目专门讨论 FileSystemObject 。可是在 ASP.NET 中呢?FileSystemObject 当然还可以用,不过,经验表明这么做会严重影响服务器性能。因此,最好还是使用 .NET 框架本身提供的类来读取文件。本文要介绍的是如何读取文本文件。今后我还会介绍如何使用 .NET 框架类来读取 XML 文件。

  1、File ? FileInfo ?

  在 .NET 框架中,有许多方法可以打开文本文件。有趣的是,所有这些方法集中在 System.IO 名字空间的两个类中。它们是 File 类和 FileInfo 类。两个类之间的区别很小。File 类的方法全都是共享方法(静态方法),而FileInfo 类有例外。共享方法就是不用创建类实例也能调用的方法。假设要用这两个类删除文件,则可以这么做:

'使用 File 类
File.Delete(fileName)

'使用 FileInfo 类
Dim fInfo as FileInfo
fInfo = new FileInfo(fileName)
fInfo.Delete()

  请注意,File 类的 Delete 方法只带一个参数,即待删的文件,而且不必对 File 类进行实例化就能调用。再来看 FileInfo 类,它的 Delete 方法不带参数,因为文件名在 FileInfo 类实例的构造器中指定。

  就我个人而言,我偏爱 File ,因此就拿它来作示范吧。我敢打赌 File 类的效率稍微高那么一点点,因为使用它就不会因为类的实例化而烦恼;不过那只是猜测而已。(如果感兴趣,请不妨编程比较一下它们的性能。当你完成之后,请把结果告诉我!)

  2、打开文件

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

  请注意,代码的第一行导入了 System.IO 命名空间。这是因为 File 类就属于此命名空间。还有,在 Page_Load 事件处理程序中,创建了一个字符串 FILENAME ,其内容就是欲打开的文件的物理路径(比如 C:\Inetpub\wwwroot\Rand.txt)。最后,在 ASP.NET 中的 Server.MapPath 也和经典的 ASP 中相同 (为了更好地理解 Server.MapPath ,请别忘了阅读位于 http://aspnet.4guysfromrolla.com/webtech/121799-1.shtml 的《Using Server.MapPath》)。

  3、从文件中读取文本

  现在,你面临两种选择:(1) 读取文件当前位置的下一行文本到字符串;(2) 读取整个文件的文本到字符串。如果是后者,你只需调用 ReadToEnd() 方法即可:
...
'现在,读取整个文件的文本到字符串
Dim contents as String = objStreamReader.ReadToEnd()
...

  但如果是前者呢?在读取下一行文本之前,须得先确认尚有文本可读。为此,可以尝试 Peek() 方法。Peek() 方法能够返回指定流的下一个文本字符,却不把该字符从流中删掉;如果流中不再有文本字符可读,则返回 -1。接下来,只要循环遍历 Peek() 的返回值:loop while objStreamReader.Peek() <> -1 ,并且在循环内部使用 ReadLine() 方法读取下一行文本就行了:

While objStreamReader.Peek() <> -1
someString = objStreamReader.ReadLine()
'... do whatever else you need to do ...
End While

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: asp ASP net NET Net 文本文件

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网