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

文章翻译 文章翻译
文章编号: 302309 - 查看本文应用于的产品
本文的发布号曾为 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 System
    Imports System.IO
    Imports 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 If
    Loop Until sLine Is Nothing
    objReader.Close()
  6. 使用"For Each"循环将新填充的 ArrayList 内容写到控制台,如下所示:
    For Each sLine In arrText
    Console.WriteLine(sLine)
    Next
    Console.ReadLine()
  7. 保存并运行代码,将在控制台上逐行输出您的文件。

完整代码列表

Imports System
Imports System.IO
Imports System.Collections

Module 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 Sub

End Module 

缺陷

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

参考

有关更多信息,请访问下面的 Microsoft .NET SDK QuickStart Tutorials 站点:
http://www.gotdotnet.com/quickstart

属性

文章编号: 302309 - 最后修改: 2001年10月25日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Visual .NET 2002 标准版
关键字:?
kbhowto kbhowtomaster kbnokeyword KB302309
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com