日期:2009-07-16  浏览次数:20464 次

在 Visual Basic .NET 中选择文件 I/O 选项
Cat Francis
Visual Studio Team
Microsoft Corporation

2002 年 4 月

摘要:本文是针对 Visual Basic 程序员而写的,他们可能会搞不清 Visual Basic .NET 中的多种文件 I/O 访问方法。可用的方法包括 Visual Basic .NET 运行时提供的方法、FileSystemObject 以及公共语言运行时提供的方法。阅读完本文后,有经验的开发人员将很快熟悉这三种方法,并且可以得心应手地从中进行选择。本文包含一些指向英文站点的链接。

目录
简介
Visual Basic .NET 中的文件方法
Visual Basic .NET 中的 FileSystemObject
公共语言运行时文件方法
总结
简介
有经验的 Visual Basic® 开发人员最初可能会认为,Visual Basic .NET 中的变化使本来已经熟悉的领域变得陌生而难以驾驭。其实,过去开发的成果仍然可以使用。例如,Visual Basic 运行时文件 I/O 方法就是大家比较熟悉的。同样,以前曾涉猎过 FileSystemObject 对象的开发人员也可以继续在这一领域畅游。尽管公共语言运行时领域可能让人感到陌生并且到处都是以对象为中心的“怪物”,但同时,它提供的功能却极具诱惑力,例如 FileSystemWatcher 或 FileIOPermissions 类中的新功能。

事实上,唯一让 Visual Basic .NET 开发人员望而却步的是如何从这三种方法中进行选择。对许多应用程序而言,对文件和目录进行操作是最重要的,但是 Visual Basic .NET 所提供的灵活方法可能会使人感到困惑,并且会提出下列问题:Visual Basic .NET 提供什么样的文件访问?何时使用 FileSystemObject 对象?使用公共语言运行时中的方法有哪些好处?是否需要专门使用一种方法?如何选择方法?

Visual Basic .NET 中的文件方法
让我们先看看 Microsoft.VisualBasic 命名空间,这可以为那些被全新的 .NET 领域吓坏的开发人员带来一些安慰和信心。命名空间包含许多熟悉的函数和方法。除了部分名称有少许改动外,大部分名称仍保持不变,如 Dir、Input、Print、Seek、Write 等等。

在选择运行时函数时,主要应考虑写入文件或从文件中收集的信息的类型。Visual Basic .NET 为三种类型的文件提供了访问方法,每种方法适用于一种特定的数据类型:二进制、顺序和随机。

二进制访问,允许您以任意方式存储和访问数据,这种方法对于变长字段尤为有用。
随机访问,允许您以记录的方式存储和访问信息,这种方法假定记录是等长的。
顺序访问,允许您在文本文件中读取和写入字符串。
有关详细信息,请参阅 Data Access Functions。

这些不同类型的文件访问所使用的函数发生了一些变化。最显著的变化是用 FilePut/FilePutObject 和 FileGet/FileGetObject 函数代替 Put 和 Get 函数。在 Visual Basic .NET 中,FilePut 和 FileGet 映射到 Put 和 Get 函数;FilePutObject 和 FileGetObject 用于将 Object 类型(等价于 Visual Basic 早期版本中的 Variant 类型)的对象写入文件。有关详细信息,请参阅 Variant。

例如,下面是 Visual Basic 6.0 的代码:

   Dim Person As Variant
   If IdentifyPeopleByName Then
      Person = "我的姓名 1"
   Else
      Person = 564
   EndIf
   Put #1, , Person
在 Visual Basic .NET 中变为:

   FileOpen(1, "c:\test.txt", OpenMode.Binary)
   Dim Person As Object
   If IdentifyPeopleByName Then
      Person = "我的姓名 1"
   Else
      Person = 564
   EndIf
   FilePutObject(1, Person)
   FileClose(1)
总之,对于有经验的 Visual Basic 程序员来说,这一方面应该很容易掌握。下表列出了 Visual Basic .NET 中用于文件和目录操作的函数,并提供了介绍各个函数的相应主题的链接。

函数 说明
CurDir 返回表示当前目录的 String 值。
Dir 返回 String 值,表示与指定模式或文件属性相匹配的文件名、目录名或文件夹名,或者表示驱动器的卷标。
EOF 当为随机输入或顺序输入而打开的文件到达末尾时,返回 Boolean 值 True。
FileClose 将 I/O 写入到使用 FileOpen 函数打开的文件。
FileCopy 复制文件并保留原文件。
FileDateTime 返回 Date 值,表明最近一次修改文件的日期和时间。
FileLen 返回 Long 值,表明文件的长度(字节)。
FileOpen 打开用于输入或输出的文件。
FreeFile 返回 Integer 值,指定 FileOpen 函数可以使用的下一个文件的编号。
GetAttr 返回 FileAttribute 值,表示文件、文件夹或目录的属性。
Input 从打开的顺序文件读取数据并将该数据分配给变量。
InputString 返回 String 值,包含在 Input 或 Binary 模式下打开的文件中的字符。
LineInput 从打开的顺序文件中读取一行并将其分配给 String 变量。
Loc 返回 Long 值,指定在打开的文件中的当前读/写位置。
LOF 返回 Long 值,表示使用 FileOpen 函数打开的文件的大小(字节)。
Print 将显示格式的数据写入顺序文件。
PrintLine 将显示格式的数据写入顺序文件,并以回车符结束。
Seek 返回 Long 值,指定在使用 FileOpen 函数打开的文件中的当前读/写位置;或为使用 FileOpen 函数打开的文件中的下一个读/写操作设置位置。
SetAttr 设置文件的属性信息,如 ReadOnly、Hidden、Directory、Archive 等等。
Write 将数据写入顺序文件。通常使用 Input 函数从文件中读取使用 Write 函数写入的数据。
WriteLine 将数据写入顺序文件,并以回车符结束。

优点和缺点
Visual Basic .NET 运行时提供的函数有两个主要优点,即为开发人员所