理论教育 VisualBasic计算机程序设计语言:文件基本操作

VisualBasic计算机程序设计语言:文件基本操作

时间:2023-11-19 理论教育 版权反馈
【摘要】:文件的基本操作语句指的是文件的删除、拷贝、重命名等。文件列表框接收Dblclick事件。当打开的文件或设备正在输出时,执行Close语句后,不会使输出信息的操作中断。程序运行结束时,会自动关闭所有打开的文件,但对打开的文件完成操作后及时关闭该文件是个好习惯,不仅节约内存,也避免意外情况丢失数据。程序运行时将写入文件的数据均放在文件读写缓冲区,待整批写入文件。例:Close 1,2关闭1号和2号文件Close#3

VisualBasic计算机程序设计语言:文件基本操作

文件的基本操作语句指的是文件的删除、拷贝、重命名等。VB中可通过以下相应的语句执行:

删除文件(Kill语句)、拷贝文件(FileCopy语句)、文件(目录)重命名(Name语句)。常用的事件:DblClick事件和Click事件。文件列表框接收Dblclick事件。利用这一点可以执行文件列表框中的某个可执行文件,也就是说,只要双击文件列表框中的某个可执行文件。就能执行该文件。这可以通过Shell函数来实现。

在Visual Basic中,无论用哪种存取方式对数据文件进行操作,都必须先打开文件,然后向文件中写入或读出数据,最后关闭文件。文件的操作分三个步骤进行:打开文件,Open语句。进行读、写操作。关闭文件。

图13-2 文件的存取

一、文件的打开

格式:Open<文件名>[For打开方式][Access存取类型][锁定]As[#]文件号[Len=记录长度

Open语句的功能是为文件的输入输出分配缓冲区,并确定缓冲区所使用的存取方式。

说明:格式中的Open、For、Access、As、Len等是VB关键字。

1.打开方式

打开方式是指打开文件的输入、输出方式,有如下形式:

Output:打开顺序文件,并只能写。若无此文件,则自动建立。

Input:打开顺序文件,并只能读。

Append:打开顺序文件,并只能写,写入的数据附加到原来文件后面。

Random:打开随机文件,可以读也可以写。

Binary:以进制文件的方式打开文件,可以读也可以写。

打开一个顺序文件有三种方式可选:

方式一:Input。打开文件后,从文件中读取数据。

方式二:Output。打开文件后,向文件中写入数据,即重写一个顺序文件。

方式三:Append。打开文件后,向文件末尾添加数据。

若指定Input方式,则当指定文件不存在时产生一个错误;若指定Output或Append方式,则当文件不存在时建立该文件,文件已存在时写入的数据,前者覆盖,后者追加。所以Open具有建立和打开文件的双重功能。

对同一文件用一种方式打开后,在关闭之前,不能再以另一种方式打开。

2.文件号

VB应用程序每打开一个文件,必须指定一个文件号,且不能与其他打开的文件占用的文件号重复。文件号的范围是1~511之间的整数。打开文件后,指定的文件号就与该文件相关联,程序通过文件号来对文件进行读、写操作,直到关闭文件。关闭文件后,该文件号被释放,可供打开其他文件时使用。

如果在程序中已打开多个文件(此时占用的文件号未必连续),则再打开文件时,为了避免文件号重复,可使用FreeFile函数,该函数返回当前程序未被占用的最小的文件号,可通过把函数值赋给一个变量来取得这个文件号。例如,执行下面的代码:

FileNumber=FreeFile

Open"E:\VB\Exercise.txt"For Output As#FileNumber则在E盘VB文件夹下建立Exercise.txt数据文件,文件号为FileNumber,如果这个文件已经存在,则原有文件被覆盖。如果执行下面的代码:

FileNumber=FreeFile

Open"E:\VB\Exercise.txt"For Append As#FileNumber也在E盘VB文件夹下建立Exercise.txt数据文件,文件号为FileNumber,但当该文件已经存在时,新写入的数据追加到原有数据的后面。

3.缓冲区大小(记录长度)

当在文件与程序之间拷贝数据时,选项Len参数指定缓冲区的字符数,其范围为1~32767,缺省值为512字节。例如,执行下面的代码:

Open"E:\VB\Exercise.TXT"For Input As#1 len=1024则打开E盘VB文件夹下的数据文件Exercise.txt,为读取数据做准备,与之关联的文件号为1,读写缓冲区为1024字节。

在程序中,获取文件名可通过【打开】文件或文件【另存为】对话框实现。例如,下面的代码从【打开】文件对话框中打开一个文件,以便从该文件中读取数据:

而下面的代码则从文件【另存为】对话框中输入文件名,以便建立从文件名框中输入或选定的文件:

建立【打开】文件或文件【另存为】对话框用公共对话(CommonDialog)控件,见本书相关章节。

注意:用公共对话控件可创建文件【打开】和文件【另存为】对话框,但它只能为建立和访问的文件输入文件名提供一个可视的界面,对话框本身不能完成打开文件和保存文件的功能,须编写代码完成。

4.Open语句用法示例

(1)打开C盘VB文件夹下的文件A.dat,并进行写操作,指定文件号为1。文件打开语句为:

Open"C:\VB\A.DAT"For Output As#1

(2)将①中的文件打开,并进行写操作,但保留原记录。

Open"C:\VB\A.DAT"For Append As#1

(3)将②中的文件打开,指定文件号为2,并准备读文件。

Ch$="C:\VB\A.DAT"

Open Ch For Input As#2

此例将文件名赋值给字符串变量Ch。

(4)打开D盘上的随机文件B.txt,它的记录长度为30个字符。

Open"D:\B.TXT"For Random As#1 Len=30

二、文件的关闭

格式:Close[文件号列表]

该语句的功能是关闭指定的文件,释放缓冲区;若不指定文件号,则关闭所有打开的文件。

关闭文件的作用:第一,把文件缓冲区中的所有数据写到文件中。第二,释放与该文件相联系的文件号,以供其他Open语句使用。

除了用Close语句关闭文件外,在程序结束时将自动关闭所有打开的数据文件。

当打开的文件或设备正在输出时,执行Close语句后,不会使输出信息的操作中断。如果不使用Close语句关闭文件,则可能使某些需要写入的数据从内存(缓冲区)送入文件中。

程序运行结束时,会自动关闭所有打开的文件,但对打开的文件完成操作后及时关闭该文件是个好习惯,不仅节约内存,也避免意外情况丢失数据。程序运行时将写入文件的数据均放在文件读写缓冲区,待整批写入文件。

例:

Close 1,2 关闭1号和2号文件

Close#3 关闭3号文件

Close 关闭所有文件

三、文件指针

文件被打开后,自动生成一个文件指针(隐含的),文件的读或写就是从这个指针所指的位置开始,文件经过一次读或写操作后,文件指针会自动移到下一个读或写操作的起始位置。文件指针的定位可通过Seek语句来实现,其格式为:

Seek #文件号,位置

Seek语句用来设置文件中下一个读或写的位置,“文件号”的含义同前,“位置”是一个数值表达式,用来指定下一个要读写的位置,在顺序文件中是以字节为单位。其值在1~(211-1)范围内。

说明:

1.对于用Input,Output或Append方式打开的文件,执行下一个操作地址,对于用Random方式打开的文件,“位置”是一个记录号。

2.与Seek语句配合使用的是Seek函数,其格式为:

Seek(文件号)

该函数返回文件指针的当前位置。

若文件以Append方式打开,指针指向文件尾。

若文件以其他方式打开,则指针指向文件头。

四、文件读写操作函数

1.EOF函数

格式:EOF(文件号)

功能:用来测试文件是否结束。返回值为逻辑值。

2.Loc函数

格式:Loc(文件号)

功能:对于随机文件,Loc函数返回文件读或写的最后一个记录。对于顺序文件,Loc函数返回的是从该文件被打开以来读或写的记录个数。

3.LOF函数

格式:LOF(文件号)

功能:该函数的返回值为文件所包含的字节数(文件的长度)在VB中文件的基本单位是记录,每个记录的默认长度是128个字节,Lof函数返回的将是128的倍数,不一定是实际的字节数。

4.FreeFile函数(www.daowen.com)

格式:FreeFile()

功能:返回空闲的文件号。可把未使用的文件号赋给一个变量。

顺序文件的访问:顺序文件的操作有读和写数据的语句两种。

写数据的语句:Print语句和Write语句。

读数据包括:Input语句和LineInput语句和Input$函数。

5.Print语句

格式:Print#文件号,[表达式列表]

功能:将数据写入顺序文件中。

例如:

程序运行后,在文件x.txt的内容和窗体上的显示均为:a+b=10。

6.Write语句

语法格式为:

W rite#文件号[,表达式列表]

该语句适用于向划分了字段的记录格式的文件写入数据。“表达式表”中的每个表达式写入一个字段,一个W rite语句一次写入一个记录。表达式表中包含多个表达式时以逗号分隔。缺省表达式时写入一个空行。

用Write语句写入的数据各个字段间自动加逗号分隔符,字符型数据自动加双引号定界符,记录尾自动加回车换行符。

【例13.1】用Write#建立由表13-2给出的居民区人员登记表。

表13-2 居民区人员登记表(jmdjb.dat)

代码如下:

图13-3 例13.1执行后结果

例如:

程序运行后,向文件y.dat中写入:"A1","A2","A3","A4"。

【例13.2】Print和W rite的区别。

图13-4 “Print”执行结果

图13-5 “Write语句”执行结果

7.Input语句

格式:Input#文件号,[变量列表]

功能:从顺序文件中读取数据,遇到逗号,便认为是数据项的结束。

Input#语句:用于从打开的顺序文件中读取数据,赋值给指定的变量。

该语句用于读取文件中的数据,以字段为单位,读取后依次赋值给变量表中的变量。变量表中有多个变量时以逗号分隔。

使用该语句时,变量表中的变量个数应和文件中每条记录划分的字段数相同,类型应匹配,即一次应读出一整条纪录。读出的数据不包括字符串字段的定界符和字段之间的分隔符。

为了正确地从打开的文件读取数据到变量中,文件中的数据应该是用Write#语句写入(而不是用Print#语句),这样可保证每个字段被正确分界。

【例13.3】(文件-程序读写数据)举例说明如何打开、保存文件,以及如何在文件中追加数据。各控件及其属性如图13-6、表13-3所示。

图13-6 例13.3界面设计

表13-3 各对象对应属性的属性值

代码如下:

Rem利用另存为对话框保存文件

8.Line Input语句

格式:Line Input#文件号,[变量列表]

功能:从顺序文件中读取一行数据,遇到回车,便认为是数据行的结束。

例如,数据文件a.dat中有如下3条记录:

有如下程序段:

程序运行后,窗体上显示:Visual Basic 6.0。

9.Input$函数

格式:Input$(n,#文件号)

功能:返回从指定文件中读取的n个字符。n为整型表达式。

例如,若有数据文件c:\vb\b.dat,内容为字符串1234567890。程序代码为:

Open"c:\vb\b.dat"For Input As#5

x$=Input$(6,5)

Print x

Close

程序运行后,在窗体上显示:123456。

五、随机文件的访问

1.Put语句

格式:Put#文件号,[记录号],变量

功能:将变量的内容写入随机文件的指定记录中。

例如:

Put#1,,s

表示将变量S的值写入1号文件的当前记录中。

2.Get语句

格式:Get#文件,[记录号],变量

功能:将随机文件中指定记录的内容读出到变量中。

例如:

Get#1,5,s

表示将1号文件的5号记录的内容读出到变量S中。

六、二进制文件的访问

二进制文件的访问以字节数来定位数据,允许程序按所需要的方式组织和访问数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈