首页 > 其他分享 >VB Open 函数详解 打开、关闭、读、写文件

VB Open 函数详解 打开、关闭、读、写文件

时间:2024-02-18 15:11:19浏览次数:29  
标签:语句 文件 VB 变量 详解 Input 打开 Open

(一)打开和关闭文件     

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,变量,详解,Input,打开,Open
From: https://www.cnblogs.com/YaoZhouyi/p/18019345

相关文章

  • 【c&c++】cJSON详解
    一、JSON概述1.1JSON介绍JSON:JavaScript对象表示法(JavaScriptObjectNotation)。是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似C语音家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON......
  • 【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • 【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数...),性能测试工具选择。性能脚本:1.LoadRunner介绍,2.脚本录制、运行、参数化,3.关联、检查点、事务......
  • 【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论性能测试相关知识。入门阶段:认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试),常用性能测试指标-(吞吐量、并发数、响应时间、点击数...),性能测试工具选择。性能脚本:1.LoadRunner介绍,2.脚本录制、运行、参数化,3.关联、检查点、事务......
  • Openwrt罢工后重新配置记录
    春节回乡过年,远程登陆时发现,socat端口转发有点儿问题,无法访问自己的NAS。尝试重启openwrt,结果直接跪了,再也无法登录了。返京后摸索了半天,发现是安装系统的U盘可能是不行了,导致配置无法存储,每次重启系统都会直接复位。本来想一不做二不休,直接把系统装到买软路由时送的mSAT......
  • OpenAI推出生成式视频划时代的模型:Sora惊艳登场,引爆行业变革!这次,它又将颠覆哪些领域?
    哈喽,大家好,我是程序视点的小二哥!前言就在今天,一个消息把我给震惊呆了:奥特曼发布OpenAI首个视频生成模型Sora。完美继承DALL·E3的画质和遵循指令能力,能生成长达1分钟的高清视频。就在昨天~就是昨天,我还在和AI的小伙伴讨论说“目前的AI,在文生视频方面,还停留在5、6秒的视频......
  • 视频生成-OpenAI Sora
    Videogenerationmodelsasworldsimulators我们探索了视频数据生成模型的大规模训练方法。具体来说,在不同时长、分辨率和纵横比的视频和图片数据上联合训练的文本条件的扩散模型。利用transformer架构操作视频的时空块(patches)和图像隐编码(latentcodes)。我们最大的模型Sor......
  • 曾仕强:龙马精神的寓意和详解
    人们经常用“龙马精神”来作为祝愿或期许语。唐代李郢《上裴晋公》诗中,有“四朝忧国鬓如丝,龙马精神海鹤姿”两句,大约是“龙马精神”最早出处。很多人都把其中的“龙马”,理解为古代传说中形状象龙的骏马;而“龙马精神”也就成了比喻人精神旺盛的词语了。 大家知道,《易经》中乾卦......
  • OpenHarmony—UIAbility组件生命周期
    概述当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,或者UIAbility实例发生了前后台的状态切换。UIAbility......
  • Ubuntu 22.04 源码安装ST-Link V2过程详解
    一首先安装依赖工具:A安装预编译库:sudoapt-getinstallgitmakecmakelibusb-1.0-0-devB安装gcc库:sudoapt-getinstallgccbuild-essential二源码安装A下载代码gitclonehttps://github.com/stlink-org/stlink.gitB编译:cmake.makeC复制二进......