2000年6月23日星期五

VB文件操作

在VB中,对于顺序文件、随机文件、二进制文件的操作通常都有3个步骤:

(1)打开文件

文件操作的第一步是打开文件。在创建新文件或使用旧文件之前,必须先打开文件。打开文件的操作,会为这个文件在内存中准备一个读写时使用的缓冲区,并且声明文件在什么地方,叫什么名字,文件的处理方式。

(2)访问文件

访问文件是文件操作的第二步。所谓访问文件,即对文件进行读/写操作。从磁盘将数据送到内存称为“读”,从内存将数据存到磁盘称为“写”。

(3)关闭文件

打开的文件使用(读/写)完后,必须关闭,否则会造成数据丢失。关闭文件会把文件缓冲区中的数据全部写入磁盘,释放掉该文件缓冲区占用的内存。

A 顺序文件

顺序文件用于处理一般的文本文件,它是标准的ASCII文件。顺序文件中各数据的写入顺序、在文件中的存放顺序、和从文件中的读出顺序3者是一致的。

顺序文件按行组织信息。每行由若干项组成,行的长度不固定,每行由回车换行符号结束。

a 顺序文件的打开与关闭

在对顺序文件进行操作之前,必须用Open语句打开要操作的文件。在对一个文件操作完成后,要用Close语句将它关闭。

1.Open语句的一般格式

Open 文件名 [For打开方式 ] As [#]文件号

(1)文件名。

(2)打开方式包括以下3种。

Input Output Append

(3)文件号。

是一个1~511之间的整数。它用来代表所打开的文件,文件号可以是整数或数值型变量。

例如:

① Open "d:\shu1.dat" For Input As #1

该语句以输入方式打开文件shu1.dat,并指定文件号为1。

② Open "d:\shu2.dat" For  Output As #5

该语句以输出方式打开文件shu2.dat,即向文件shu2.dat进行写操作,并指定文件号为5。

③ Open "d:\shu3.dat" For  Append As #7

该语句以添加方式打开文件shu3.dat,即向文件shu3.dat添加数据,并指定文件号为7。

2.Close语句的一般格式

Close [文件号表列]

例如:

① Close #1

关闭文件号为1的文件。

② Close #2,#7,#8

关闭文件号为2,7,8的文件。

③ Close

关闭所有已打开的文件。

b 顺序文件的写操作

VB用Print语句或Write语句向顺序文件写入数据。创建一个新的顺序文件或向一个已存在的顺序文件中添加数据,都是通过写操作实现的。另外,顺序文件也可由文本编辑器(记事本、Word等)创建。

1.Print语句

Print语句的一般格式:

Print #文件号 [,输出表列]

例如:

Open "d:\shu2.dat" For  Output As #2

Print # 2, "zhang";"wang";"li"

Print # 2, 78;99;67

Close #2

执行上面的程序段后,写入到文件中的数据如下:

zhangwangli

78 99 67

2.Write语句

用Write语句项文件写入数据时,与Print语句不同的是,Write语句能自动在各数据项之间插入逗号,并给各字符串加上双引号。

Write语句的一般格式:

Write #文件号 [,输出表列]

例如:

Open "d:\shua.dat" For  Output As #6

Write # 6, "zhang";"wang";"li"

Write # 6, 78;99;67

Close #6

执行上面的程序段后,写入到文件中的数据如下:

"zhang","wang","li"

78,99,67

c 顺序文件的读操作

顺序文件的读操作,就是从已存在的顺序文件中读取数据。在读一个顺序文件时,首先要用Input方式将准备读的文件打开。VB提供了Input、Line Input语句和Input函数将顺序文件的内容读入。Input函数将在9.4节中介绍。

1.Input语句

Input语句一般格式:

Input #文件号,变量表列

例如:

Private Sub form_Click()

Dim x$,y$,z$,a%,b%,c%

Open "c:\_vb\shua.dat" For Input As #1

Input #1,x,y,z

Input #1,a,b,c

Print x,y,z

Print a,b,c

Print a + b + c

Close #1

End Sub

如果顺序文件shua.dat的内容如下:

"zhang","wang","li"

78,99,67

执行Form_Click过程,在窗体上显示的内容为:

zhang wang li

78 99 67

244

2.Line Input语句

Line Input语句是从打开的顺序文件中读取一行。

Line Input语句的一般格式:

Line Input #文件号,字符串变量

例如:

如果顺序文件shua.dat的内容如下:

"zhang","wang","li"

78,99,67

我们用Line Input语句将数据读出并且把它显示在文本框中。

Private Sub Command1_Click()

Dim a$,b$

Open "c:\_vb\shua.dat" For Input As #2

Line Input #2,a

Line Input #2,b

Text1.Text = a & b

End Sub

执行以上过程,文本框中显示的内容为:

"zhang","wang","li"78,99,67



B 随机文件

使用顺序文件有一个很大的缺点,就是它必须顺序访问,即使明知所要的数据是在文件的末端,也要把前面的数据全部读完才能取得该数据。而随机文件则可直接快速访问文件中的任意一条记录,它的缺点是占用空间较大。

随机文件由固定长度的记录组成,一条记录包含一个或多个字段。具有一个字段的记录对应于任一标准类型,比如整数或者定长字符串。具有多个字段的记录对应于用户定义类型。随机文件中每个记录都有一个记录号,只要指出记录号,就可以对该文件进行读写。

1 随机文件的打开与关闭

在对一个随机文件操作之前,也必须用Open语句打开文件,随机文件的打开方式必须是Random方式,同时要指明记录的长度。与顺序文件不同的是,随机文件打开后,可同时进行写入与读出操作。

Open语句的一般格式:

Open 文件名 For Random As #文件号 Len=记录长度

说明:

记录长度是一条记录所占的字节数。可以用Len函数获得。

例如,定义以下记录:

Type student

Name As String*10

Age As Integer

End Type

就可以用下面的语句打开:

Open "d:\Test.dat" For Random As #9 Len=Len(student)

随机文件的关闭同顺序文件一样,用Close 语句。

2 随机文件的写操作

用Put语句进行随机文件的写操作。

Put语句一般格式为:

Put # 文件号,记录号,变量

说明:

Put语句把变量的内容写入文件中指定的记录位置。记录号是一个大于或等于1的整数。

例如,Put # 1,9,t

表示将变量t的内容送到1号文件中的第9号记录去。

3 随机文件的读操作

用Get语句进行随机文件的读操作。

Get语句格式一般为:

Get # 文件号,记录号,变量

说明:

Get语句把文件中由记录号指定的记录内容读入到指定的变量中。

例如,Get # 2,3,u

表示将2号文件中的第3条记录读出后存放到变量u中。

D 二进制文件

二进制文件被看作是字节顺序排列的。由于对二进制文件的读写是以字节为单位进行的,所以能对文件进行完全的控制。如果知道文件中数据的组织结构,则任何文件都可以当作二进制文件来处理使用。

1 二进制文件的打开与关闭

二进制文件的打开用Open语句。

其格式为:

Open 文件名 For Binary As #文件号

使用Close语句关闭二进制文件。

2 二进制文件的读/写操作

对二进制文件的读/写同随机文件一样用Put和Get语句。

它们的格式如下:

Put # 文件号,位置,变量

Get # 文件号,位置,变量



文件操作常用函数

1.LOF函数

格式:LOF(文件号)

功能:返回一个已打开文件的大小,类型为Long,单位是字节。

2.FileLen函数

格式:FileLen(文件名)

功能:返回一个未打开文件的大小,类型为long,单位是字节。文件名可以包含驱动器以及目录。

3.EOF函数

格式:EOF(文件号)

功能:用于判断读取的位置是否已到达文件尾。当读到文件尾时,返回True,否则返回False。对于顺序文件,用EOF 函数测试是否到达文件尾;对于随机文件和二进制文件,如果读不到最后一个记录的全部数据,返回True,否则返回False。对于以Output 方式打开的文件,EOF 函数总是返回True。

4.LOC函数

格式:LOC(文件号)

功能:返回文件当前读/写的位置,类型为Long。 对于随机文件,返回最近读/写的记录号;对于二进制文件,返回最近读/写的字节的位置。对于顺序文件,返回文件中当前字节位置除以 128 的值。对于顺序文件而言,Loc 的返回值无实际意义。

5.Input函数

格式:Input(字符数,#文件号)

功能:从打开的顺序文件读取指定数量的字符。Input函数返回从文件中读出的所有字符,包括逗号、回车符、换行符、引号和空格等。

例如:Text1.Text=Input(Lof(2),#2)

该语句是将2号文件的内容全部复制到文本框中。

没有评论:

发表评论