日期:2012-10-31  浏览次数:20464 次

Visual Basic.Net中有三种访问文件系统的方法:第一种是使用 Visual Basic 运行时函数进行文件访问 (VB传统方式直接文件访问);第二种是通过.Net中的System.IO模型访问;第三种是通过文件系统对象模型FSO访问。

文件是存储在某种介质上数据的集合,就其本身来讲,文件只不过是磁盘上的一系列相关的数据字节。当应用程序访问文件时,它必须假定字节是否表示字符、数据记录、整数、字符串等。通过指定文件的访问类型来告诉应用程序假定什么内容。

Visual Basic 提供三种类型的文件访问:

1.顺序,用于在连续的块中读取和写入文本文件。

2.随机,用于读取和写入结构为固定长度记录的文本或二进制文件。

3.二进制,用于读取和写入任意结构的文件。



使用 Visual Basic 运行时函数进行文件访问



VB.Net保留了VB早期的直接文件访问的方式即通过一些相关的函数直接访问操作文件。 下表分别列出了三种直接文件访问类型的所有可用文件访问函数。

函数
顺序
随机
二进制
说明

FileOpen 函数
X
X
X
打开输入或输出文件

FileClose 函数
X
X
X
关闭对用 FileOpen 函数打开的文件

Input 函数
X

X
从打开的顺序文件中读取数据并将数据分配给变量。

InputString 函数
X


返回 String 值

LineInput 函数
X


从打开的顺序文件中读取一行数据并将它赋给 String 变量。

Print、Printline 函数
X


将格式化的显示数据写入顺序文件。

Write、WriteLine 函数
X


将数据写入顺序文件。



要对文件进行操作,首先要打开文件,使用FileOpen函数。

示例:以 Output 模式共享方式打开C盘下的readme.txt文件。

FileOpen(1, "c:\readme.txt", OpenMode.Output, OpenShare.Shared)

当操作文件结束后,需要关闭文件防止文件内容的丢失,此外需要重新打开文件时也需要关闭文件,用FileClose函数,关闭刚才打开的文件c:\readme.txt:

FileClose(1);

当以input模式打开顺序文件时,要打开的文件必须已经存在,否则打开出错,以Output或Append模式打开一个不存在的文件时,FileOpen先创建该文件,然后打开。

其他的一些函数:

Dir 函数:返回表示匹配指定模式或文件属性的文件名、目录名或文件夹名的字符串或返回驱动器卷标的字符串。

EOF 函数:当到达以 Random 或顺序 Input 模式打开的文件尾时,返回 Boolean 值 True。

FileCopy 函数:复制文件

FileDateTime 函数:返回指示创建或最后修改文件的日期和时间的 Date 值。



FileLen 函数:返回以字节表示的指定文件长度的 Long 值。

FreeFile 函数:返回一个 Integer 值,表示可由 FileOpen 函数使用的下一个文件号。

GetAttr 函数:返回表示文件、目录或文件夹的属性的 FileAttribute 值。

Loc 函数:返回一个 Long 值,该值指定打开文件中当前的读/写位置。

LOF 函数:返回一个 Long 值,表示用 FileOpen 函数打开的文件的大小(以字节为单位)。

Seek 函数:返回一个 Long 值,指定用 FileOpen 函数打开的文件中的当前读/写位置,或设置用 FileOpen 函数打开的文件中的下一个读/写操作的位置。

SetAttr 函数:设置文件属性信息。

1、顺序文件的操作

从文件中读取字符串

有三个函数可以从顺序文件中读取字符串:Input,InputString和LineInput。

Input函数

从打开的顺序文件中读取数据并将数据分配给变量。

Public Sub Input( FileNumber As Integer, ByRef Value As Object)

其中参数FileNumber为有效文件号;Value为被赋予从文件读取的值的变量,它不能为数组或对象变量。

下面的例子是一个写入和读取文本example.txt的Hello,world!例子,新建一个控制台应用程序,写入下面的代码查看结果。

FileOpen(1, "c:\example.txt", OpenMode.Output)

Write(1, "Hello,")

Write(1, "World!")

FileClose(1)



Dim s As String

FileOpen(1, "c:\example.txt", OpenMode.Input)

Do While Not EOF(1)

Input(1, s)

Console.WriteLine(s)

Loop

FileClose(1)

InputString函数

返回 String 值,该值包含以 Input 或 Binary 模式打开的文件中的字符。

InputString ( ByVal FileNumber As Integer, ByVal CharCount As Integer ) As String

其中参数FileNumber是有效文件号,CharCount是指定要读取的字符个数的有效数值表达式。

与 Input 函数不同,InputString 函数返回它读取的所有字符,包括逗号、回车符、换行符、引号和前导空格等。对于以 Binary 访问模式打开的文件,如果试图在 EOF 返回 True 之前用InputString 函数读取整个文件,则会产生错误。在用 InputString 读取二进制文件时,用 LOF 和 Loc 函数代替 EOF 函数,而在使用 EOF 函数时则使用 FileGet 函数。

示例:

Dim s As String

FileOpen(1, " c:\example.txt ", OpenMode.Binary)

Do While Not EOF(1)

s = InputString(1, 9)

Console.WriteLine(s)

Loop

FileClose(1)

LineInput 函数:

从打开的顺序文件中读取一行数据并将它赋给 String 变量。

Public Function LineInput (ByVal FileNumber As Integer) As String

参数 FileNumber 是有效文件号。

此函数从文件一次读取一个字符,直到遇到回车符(Chr(13))或回车–换行符(Chr(13) + Chr(10))为止。回车–换行序列被跳过而不是附加到字符字符串上。

示例:

Dim s As String