加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

顺序文件,随机文件,二进制文件操作(vb)

发布时间:2020-12-17 00:31:56 所属栏目:大数据 来源:网络整理
导读:(一)打开和关闭文件 1 、 顺序文件 打开顺序文件,我们可以使用 Open 语句。它的格式如下: Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize] 说明: ( 1 )参数 pathname 表示要打开的文件名,文件名可以包含有驱动器和

(一)打开和关闭文件
  1顺序文件
  打开顺序文件,我们可以使用Open语句。它的格式如下:
Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize]
  说明:
  (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录2Input Output Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。3As[#]filenumber 子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数既可以是数字又可以是变量.也可以省略不用.
  (4)当在文件与程序之间拷贝数据时子句指定缓冲区的字符数.
  例如:
Open App.Path + "/test.dat" For Output As 1
Open App.Path + "/test.dat" For Output As 1
  这两句代码在当前应用程序所在目录下创建了一个名为test.dat的文本文件分配文件号为1.
Open App.Path + "/test.dat" For Input As [#]filenumber
  这条语句是从文本文件中读取数据.
Open App.Path + "/test.dat" For Append As [#]filenumber
  这条语句则是像文本文件中添加数据
  2随机文件
  操作随机文件之前首先必须定义用于保存数据项的记录类型.该记录是用户自定义数据类型他们是随机文件中存储数据的基本结构.例如:
Type Student
 No As Integer
 Name As String * 20
 age As Integer
End Type
Dim Stud As Student ‘
定义一个可以存放学生材料的变量
  随机文件中所有的数据都将保存到若干个结构为Student类型的记录中而从随机文件中读出的数据则可以存放到变量Stud.
  之后我们就可以打开并读写文件了.下面是打开随机文件的语法格式:
Open filename For Random as [#]filenumber Len = Reclength
  说明:
  (1)参数filename filenumber 分别表示文件名或文件号(2)关键字Random 表示打开的是随机文件(3)Len子句用于设置记录长度长度由参数Reclength指定.Reclength的值必须大于0,而且必须与定义的记录结构的长度一致.计算记录长度的方法是将记录结构中每个元素的长度相加.例如前面声明的Student的长度应该是2+20+2=24字节.
  打开一个记录类型为Student 的随机文件的方法是:
Open "c:/Student.txt " For Random As #1 Len = 25
  3二进制文件
  打开二进制文件的语法格式如下:
Open pathname For Binary As [#]filenumber
  说明:

(1) 参数Binary 表示打开的是二进制文件(3)对于二进制文件不能指定字节长度.每个打开的二进制文件都有一个自己的指针文件指针是一个数字值指向下一次读写操作的文件中的位置.二进制文件中的每个位置对应一个数据字节因此n个字节的文件就有1n个位置.
  我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节 );Loc()函数返回上一次读写的字节位置除非用Seek语句移动了指针返回值总比Seek()的小1.我们来看下面的例子:
Open “student.txt” for Binary as #1
  该语句用二进制的方式打开了student.txt文件.

(二)读文件
  顺序文件的读取有三种方式:1Line Input # 语句
  该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input # 语句的语法格式如下:
Line Input #
文件号,变量号
  说明:文件号是打开文件时所用的文件号;变量号使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input# 语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。
  请看下面代码:
Dim strLine As String
Open "c:/vb/test.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
  此段代码逐行读取一个文件到文本框中。
  (Input函数
  此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式:
  变量 = Input(串长度,文件号)
  例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写:
file = Input
12filenum
  如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下:
file = StrCopy
Input LOFfilenanum),filenum),vbUnicodeInput # 语句Input #语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。
 
  下面使它的语法格式:
Input #
文件号,变量列表
  例如,我们要在文件student.txt中写入数据下面是代码:
Open "student.txt" For Output As #filenum
Write #filenum,"
张三","初一年级李四职业高中 Input #filenum,name,nianji,age
Input #filenum,name1,nianji1,age1
Close #filenum
  执行结果:
name=”
张三”,nianji = “初一年级李四职业高中  
  读取随机文件是可以使用Get # 语句数据从文件的一个指定记录中读出后存入一个用户自定义的变量中.
  语法格式: Get # FileNum,[RecNum],UserType
  说明(1)FileNum 是要打开的文件号;RecNum是要读取的记录号若省略则读取下一个记录(2)UserType 是一个用来存放读出数据的用户自定义的数据类型变量.
  下面是一个例子:
Get # 1,5,Student
  该语句读取文件号为1的文件中的第5条记录
  读写二进制文件的方法和读写随机文件的方法基本相同下面是相关的语句格式及其说明:
  格式: Get [#]fileNumber,[Pos],Var
  功能: 用二进制方式从文件的中指定的位置开始读取所给变量长度的数据
  说明(1)FileNumber是以二进制方式打开的文件号(2)Pos用来指定读写操作发生时的字节位置则使用当前文件指针位置(3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件如果Var是一个可变长度的字符串变量则传送的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数函数检查文件的结尾位置.
  下面的代码复制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语句所读写过的记录的后一条记录中写入如果没有执行过Put语句就从第一条记录开始(2)UserType 是包含要写入数据的用户自定义的数据类型变量:我们向前面的student.txt文件中的第5个记录写入数据可用这些语句:
stud.No = 0301
stud.Name = “
王武
stud.Age =20
Put #1,stud
  如果要插入的数据不只一两条的话首先要确定文件和每条记录的长度这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度函数返回每个记录的长度计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:
Nextrec= (Lof(1)/Len(UserType))+1
Put #1,Nextrec,UserType
  
  下面是以二进制方式写入文件的语句格式及其说明:
Put [#]fileNumber,Var
  功能从文件的中指定的位置开始写入(2)Pos用来指定写操作发生时的字节位置(3)Var是用来存放写入的数据的变量var变量包含的字节长度写入文件.
  使用方法可参考二进制文件的读操作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读