VB Open 函数详解 打开、关闭、读、写文件
(一)打开和关闭文件 说明: (1) 参数filename 和filenumber 分别表示文件名或文件号. (2)关键字Binary 表示打开的是二进制文件 (3)对于二进制文件,不能指定字节长度.每个打开的二进制文件都有一个自己的指针,文件指针是一个数字值,指向下一次读写操作的文件中的位置.二进制文件中的每个”位置”对应一个数据字节,因此,有n个字节的文件,就有1到n个位置. 我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节 );用Loc()函数返回上一次读写的字节位置,除非用Seek语句移动了指针,Loc()返回值总比Seek()的小1.我们来看下面的例子: Open “student.txt” for Binary as #1 该语句用二进制的方式打开了student.txt文件. (二)读文件 1、顺序文件 顺序文件的读取有三种方式: (1)Line Input # 语句 该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input # 语句的语法格式如下: Line Input # 文件号,变量号 说明:“文件号”是打开文件时所用的文件号;“变量号”使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input# 语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。 请看下面代码: Dim strLine As String Open "c:vbtest.txt" For Input As #1 Do Until EOF(1) Line Input #1,strLine text1.Text = text1.Text + strLine + Chr(13) + Chr(10) Loop Close #1 此段代码逐行读取一个文件到文本框中。 (2)Input函数 此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式: 变量 = Input(串长度,文件号) 例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写: file = Input(12,filenum) 如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下: file = StrCopy (Input (LOF(filenanum),filenum),vbUnicode) (3)Input # 语句 Input #语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。 下面使它的语法格式: Input # 文件号,变量列表 例如,我们要在文件student.txt中写入数据,下面是代码: Open "student.txt" For Output As #filenum Write #filenum,"张三","初一年级",14 Write #filenum,"李四","职业高中",18 Dim name As String,nianji As String,age As Integer Dim name1 As String,nianji1 As String,age1 As Integer Open "student.txt" For Input As #filenum Input #filenum,name,nianji,age Input #filenum,name1,nianji1,age1 Close #filenum 执行结果: name=”张三”,nianji = “初一年级”,age =14 name=”李四”,nianji = “职业高中”,age =18 2、随机文件 读取随机文件是可以使用Get # 语句,数据从文件的一个指定记录中读出后,存入一个用户自定义的变量中. 语法格式: Get # FileNum,[RecNum],UserType 说明: (1)FileNum 是要打开的文件号;RecNum是要读取的记录号,若省略,则读取下一个记录 (2)UserType 是一个用来存放读出数据的用户自定义的数据类型变量. 下面是一个例子: Get # 1,5,Student 该语句读取文件号为1的文件中的第5条记录. 3、二进制文件 读写二进制文件的方法和读写随机文件的方法基本相同,下面是相关的语句格式及其说明: 格式: Get [#]fileNumber,[Pos],Var 功能: 用二进制方式,从文件的中指定的位置开始读取,所给变量长度的数据 说明: (1)FileNumber是以二进制方式打开的文件号. (2)Pos用来指定读写操作发生时的字节位置,则使用当前文件指针位置. (3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数,Eof()函数检查文件的结尾位置. 下面的代码复制studert.txt文件到student1.txt文件中 Dim ar As String * 1,i As Integer Open "c:student.txt" For Binary As #1 Open "c:student2.txt" For Binary As #2 For i = 1 To LOF(1) Get #1,ar Put #2,ar Next i Close #1,#2 (三)写文件 1、 顺序文件 写顺序文件我们可以用Write # 和Print #语句向一个已经打开的文件中写入数据. 下面是他们的格式和说明: Print # 的语法格式: Print # 文件号,变量列表 例如,将文本框中的文本写到文件中,代码如下: Open "file.txt" For Output As #filenum Input #filenum,text1.text Write # 语句的语法格式: Write # 文件号,变量列表 说明:用Write # 语句写入的信息便于以后用Input #语句来读取数据,因为Write #语句自动将写入到文件中的信息用逗号分开,并为字符串数据加上双引号.例如: Open "student.txt" For Output As #filenum Write #filenum,18 2、 随机文件 向随机文件中写入数据,使用Put #语句.语法格式如下: Put [#] FileNum,UserType 说明: (1) FileNum 是要打开的文件号;RecNum是要写入的记录号,则再上一次用Get 和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get 和Put语句,就从第一条记录开始 (2)UserType 是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句: stud.No = 0301 stud.Name = “王武” stud.Age =20 Put #1,stud 如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下: Nextrec= (Lof(1)Len(UserType))+1 Put #1,Nextrec,UserType 3、二进制文件 下面是以二进制方式写入文件的语句格式及其说明: 格式: Put [#]fileNumber,Var 功能: 用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据 说明: (1)FileNumber是以二进制方式打开的文件号. (2)Pos用来指定写操作发生时的字节位置,则使用当前文件指针位置. (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,则传送的字节数等于Var中目前的字节数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |