(一)打开和关闭文件      1、顺序文件
     打开顺序文件,我们可以使用Open语句。它的格式如下:
Open pathname For [Input |Output |Append] As [#]filenumber [Len = buffersize] 
     说明:
     (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录
     (2)Input Output 和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。
     (3)As[#]filenumber 子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.
     (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.
     例如:
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) 参数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:\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 
     此段代码逐行读取一个文件到文本框中。
     (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, "张三", "初一年级", 14 Write #filenum, "李四", "职业高中", 18 
     2、 随机文件
     向随机文件中写入数据,使用Put   #语句.语法格式如下:
Put [#] FileNum ,[RecNum],UserType 
     说明:
     (1) FileNum 是要打开的文件号;RecNum是要写入的记录号,若省略,则再上一次用Get 和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get 和Put语句,就从第一条记录开始
     (2)UserType 是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句:
stud.No = 0301 stud.Name = “王武” stud.Age =20 Put #1 ,5,stud 
     如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:
Nextrec= (Lof(1)\Len(UserType))+1
Put #1,Nextrec,UserType 
     3、二进制文件
     下面是以二进制方式写入文件的语句格式及其说明:
     格式:
Put [#]fileNumber ,[Pos], Var 
     功能: 用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据
     说明:
     (1)FileNumber是以二进制方式打开的文件号.
     (2)Pos用来指定写操作发生时的字节位置,若省略,则使用当前文件指针位置.
     (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数

VB Open 函数详解 打开、关闭、读、写文件的更多相关文章

  1. FFmpeg(2)-avformat_open_input()函数详解并示例打开mp4文件

    一. 解封装 pts 是显示的时间 dts是解码的时间, 这个时间是用来做同步. av_register_all(), 注册所有的格式.包括解封装格式和加封装格式. avformat_network_ ...

  2. CreateFile函数详解

    CreateFile函数详解 CreateFile The CreateFile function creates or opens the following objects and returns ...

  3. linux select函数详解

    linux select函数详解 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状 ...

  4. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  5. 常用socket函数详解

    常用socket函数详解 关于socket函数,每个的意义和基本功能都知道,但每次使用都会去百度,参数到底是什么,返回值代表什么意义,就是说用的少,也记得不够精确.每次都查半天,经常烦恼于此.索性都弄 ...

  6. linux网络编程之shutdown() 与 close()函数详解

    linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这 ...

  7. PHP输出缓存ob系列函数详解

    PHP输出缓存ob系列函数详解 ob,输出缓冲区,是output buffering的简称,而不是output cache.ob用对了,是能对速度有一定的帮助,但是盲目的加上ob函数,只会增加CPU额 ...

  8. php缓存技术——memcache常用函数详解

    php缓存技术——memcache常用函数详解 2016-04-07 aileen PHP编程 Memcache函数库是在PECL(PHP Extension Community Library)中, ...

  9. 转载_fread函数详解

    fread函数详解 函数原型: size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   FILE   *strea ...

随机推荐

  1. 步步向前之Element-UI

    Table 固定表头 只要在el-table元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码.例如: <el-table :data="tableData3&q ...

  2. 多网卡情况下接收udp组播

    多网卡下接收udp组播 往往会接收失败 因为用错了网卡 例如我想要接收2网段 其他电脑出的udp组播  我电脑有有线网和wifi在window下可以这样 route add 230.0.0.1 mas ...

  3. inode节点号

    查看分区信息命令 df -Th 查看文件inode节点号 ls -i b.txt 查看系统中与b.txt 的inode节点号相同的所有文件,即硬链接 find  /  -inum  xxxx(b.tx ...

  4. iOS常用加密之RSA加密解密

    前言: iOS常用的加密有很多种,前两天在工作中遇到了RSA加密,现在把代吗分享出来. RSA基本原理 RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(p ...

  5. Linux_OpenSSH远程连接

    目录 目录 SSH server SSH服务属性 SSH协议执行原理 SSH连接方式 ssh Commands scp commands sftp commands SSH在生产环境中的使用 系统间备 ...

  6. cannot assign to struct field xxx in map

    golang 中对 map 类型中的 struct 赋值报错 type s struct{ name string age int}func main(){ a := map[string]s{ &q ...

  7. 【Spring】---属性注入

    一.Spring注入属性(有参构造和[set方法]) 注意:在Spring框架中只支持set方法.有参构造方法这两种方法. 使用有参数构造方法注入属性(用的不多,但需要知道): 实体类 package ...

  8. MyEclipse中的查找快捷键

    MyEclipse中的查找快捷键 1.Ctrl+H:可以搜索文件,Java类名.方法名.包名等等. 例如:在MyEclipse中打开Search弹出框,或者在菜单中打开Search弹出框, 定位到 F ...

  9. 6.824 Lab 2: Raft 2B

    Part 2B We want Raft to keep a consistent, replicated log of operations. A call to Start() at the le ...

  10. 2017-0ctf-babyheap

    fastbin attack + unsortedbin attack + __malloc_hook 的基础利用 题目下载 : https://uaf.io/assets/0ctfbabyheap ...