你目前正处于脱机状态,正在等待 Internet 重新连接

HOW TO:使用 System.IO 和 Visual Basic .NET 读取文本文件

本文的发布号曾为 CHS302309
本文讨论一种 Microsoft 产品的 Beta 版本。本文中的信息按"原样"提供,如有更改恕不另行通知。

对于该 Beta 产品,Microsoft 不提供正式的产品支持。有关获取对 Beta 版本的支持的信息,请参阅 Beta 产品文件中包括的文档资料,或查看您下载此版本的站点。

有关本文的 Microsoft Visual C# .NET 版本,请参阅 306777
概要
本文介绍了如何从文本文件中检索信息以及如何使用一个 ArrayList 类将信息显示给用户。本文分成以下几个部分:

要求

Microsoft Visual Basic .NET

读取 Visual Basic .NET 中的文本文件

为读访问打开和读取文件是输入/输出 (IO) 功能的一个重要部分,即使不需要对该文件进行写操作。该示例打开一个文件进行读取;这对文本文件是很有用的,但不适合二进制文件。该示例使用了打开文件的众多可用方法中的一种。有很多数据结构都可用于保存从文件中检索出来的信息,ArrayList 类是其中最易使用的结构。该示例打开并读取文件,其中使用了 System.IO 名称空间的对象,特别用到了 System.IO.StreamReader 类。

备注:此示例要求被读取的文本 (.txt) 文件符合特定的格式。

若要从 Visual Basic .NET 中加载并读取文本文件,请按照下列步骤操作:
  1. 打开 Visual Studio .NET。在 Visual Basic .NET 中新建控制台应用程序。Visual Studio 将为您创建一个 Module(模块),同时生成一个空的 Main() 过程。
  2. 确保工程至少引用了 System 名称空间。对 SystemSystem.IO System.Collections 名称空间使用 Imports 语句,这样就不必在后面的代码中限定这些名称空间中的声明。必须在任何其他声明之前使用这些语句。
    Imports SystemImports System.IOImports System.Collections
  3. 若要打开文件进行读取,请新建一个 StreamReader 对象实例,然后把文件的路径传递给构造函数,如下:
    Dim objReader As New StreamReader("c:\test.txt")
  4. 需要一个字符串变量来保存被处理的文件的每一行。由于以后要向 ArrayList 中添加这些行,所以应同时声明并创建一个此类型的对象。
    Dim sLine As String = ""Dim arrText As New ArrayList()
  5. 有好几种方法可以将文件读入,包括一次读取整个文件的 ReadToEnd 方法。但是,对于此例,您可以使用 ReadLine 方法一次读取一行。到达文件尾时,该方法返回"Nothing",您可以通过它来结束循环。对于从文件中读取的每一行,您可以使用 ArrayList 中的 Add 方法将其插入到 ArrayList 类中。
    Do    sLine = objReader.ReadLine()    If Not sLine Is Nothing Then        arrText.Add(sLine)    End IfLoop Until sLine Is NothingobjReader.Close()
  6. 使用"For Each"循环将新填充的 ArrayList 内容写到控制台,如下所示:
    For Each sLine In arrTextConsole.WriteLine(sLine)NextConsole.ReadLine()
  7. 保存并运行代码,将在控制台上逐行输出您的文件。

完整代码列表

Imports SystemImports System.IOImports System.CollectionsModule Module1    Sub Main()        Dim objReader As New StreamReader("c:\test.txt")        Dim sLine As String = ""        Dim arrText As New ArrayList()        Do            sLine = objReader.ReadLine()            If Not sLine Is Nothing Then                arrText.Add(sLine)            End If        Loop Until sLine Is Nothing        objReader.Close()        For Each sLine In arrText            Console.WriteLine(sLine)        Next        Console.ReadLine()    End SubEnd Module 

缺陷

使用文件 I/O 时,应注意以下几种情况:
  • 任何时候进行文件访问时,都有可能遇到试图读取或写的那个文件不在系统中或正在使用的情况。
  • 该示例将整个文件读入内存中以后再对它进行处理。您可能会遇到文件过大不能全部载入内存,或者没有权限访问文件的情况。
所有这些情况都将导致一个异常。用一个 try...catch 块来处理这些常见问题总是一个可取的做法。

参考

有关更多信息,请访问下面的 Microsoft .NET SDK QuickStart Tutorials 站点:
try-catch VB
属性

文章 ID:302309 - 上次审阅时间:10/25/2001 11:20:00 - 修订版本: 1.0

Microsoft Visual .NET 2002 标准版

  • kbhowto kbhowtomaster kbnokeyword KB302309
反馈