您好,欢迎访问三七文档
第十二讲文件内容提要文件•顺序文件、随机文件、二进制文件•文件操作文件系统控件文件文件是指存储在计算机外部存储器上经过格式化的数据的集合每个文件都有一个区别于其它文件的名字,完整的文件名又叫文件说明设备名:文件引用名文件结构为了有效的存取数据,数据必须以某种特定的方式存取,这种特定的方式称为文件结构•字符:构成文件的最基本单位,可以是数字、字母、特殊符号或单一字节•字段:也称域,由若干字符组成,表示一项数据•记录:由一组相关字段组成姓名学号性别单位张强2005010001男建筑系王红2005010006女中文系文件分类根据不同的标准,文件可分为不同的类型根据数据性质•程序文件:计算机可以执行的程序•数据文件:用来存放普通数据根据数据的存取方式•顺序文件:文件中的记录一个接一个地存放•随机文件:记录的长度和字段的长度固定,每个记录都有一个记录号,通过记录号访问记录根据数据的编码方式•ASCII文件:文本文件,以ASCII方式保存文件•二进制文件:以二进制方式保存文件文件分类VB按文件的访问方式不同,将文件分为三种:顺序文件一行一条记录,记录可长可短,以“换行”字符为分隔符号随机文件记录长度相同,根据记录号访问二进制文件直接把二进制码存放在文件中。可认为记录长度为1记录1记录2……记录N文件结束标志#1记录1#2记录2……#N记录N文件的基本操作VisualBasic中数据文件的操作分三个步骤:使用Open语句打开(或建立)文件一个文件必须先打开或建立后才能使用。文件打开后,使用文件号代表该文件。进行读、写操作在打开的文件上执行所需的输入输出操作。从文件中读数据到内存变量或向文件中写入数据使用Close语句关闭文件关闭文件就是将数据写入磁盘,并释放相关资源文件的打开Open“路径文件名”[For模式]As[#]文件号[Len=记录长度]模式:指定文件访问方式,缺省为Random•Append:新建或打开一个文件进行写操作,写入的数据追加到文件末尾•Input:打开一个文件进行读操作,若文件不存在,出错•Output:新建或打开一个文件进行写操作•Binary:指定二进制文件•Random:指定随机存取方式文件的关闭文件的读写操作结束后,必须关闭文件数据是先写入文件的缓冲区中,当缓冲区满了才将数据写入文件,而关闭文件操作可将缓冲区中内容全部写入文件•如果省略文件号,把所有打开的文件全部关闭•除了用Close语句关闭程序外,在程序结束时,自动关闭所有打开的文件Close[#]文件号][,[#]文件号]...Close1Close1,10Close文件的读写语句和函数FreeFile函数得到一个在程序中没有使用的文件号,1~511Loc函数返回由文件号指定的文件的当前读写位置LOF函数返回给文件分配的字节数(即文件长度)EOF函数用来测试文件的结束状态FreeFile[(范围参数)]Loc(文件号)LOF(文件号)EOF(文件号)顺序文件的写操作顺序文件Print#语句Print#文件号,[[Spc(n)|Tab(n)][表达式列表][;|,]]Print#1,x,ySpc函数、Tab函数、表达式列表、尾部的分号和逗号的用法同Print方法Write#语句Write#文件号,表达式表•数据在磁盘上以紧凑格式存放,自动在数据项之间加逗号,为字符串加引号•写入的正数前面无空格Write#1,x,y顺序文件的写操作-例顺序文件PrivateSubForm_Click()Openc:\writefile.txtForOutputAs#1Print#1,Hello,678.9,Date,FalsePrint#1,Hello;678.9;Date;TrueWrite#1,Hello,678.9,Date,FalseWrite#1,Hello;678.9;Date;TrueClose(1)EndSub顺序文件的读操作顺序文件Input#语句Input#文件号,变量表Input#1,x,y,z•变量表由一个或多个变量组成,变量类型应与文件中数据项的类型匹配PrivateSubForm_Click()DimxAsString,yAsInteger,zAsDateOpenc:\w1.txtForInputAs#1Input#1,x,y,zPrintx;y;zClose(1)EndSub顺序文件的读操作顺序文件LineInput#语句LineInput#文件号,字符串变量•从顺序文件中读取一行,并把它赋给一个字符串变量•可以读取顺序文件中一行的全部字符,直到遇到回车符为止。PrivateSubForm_Click()Dims$Openc:\a.datForInputAs#1DoWhileNotEOF(1)LineInput#1,sPrintsLoopClose(1)EndSub顺序文件的读操作顺序文件Input$函数Input$(n,#文件号)•返回从指定文件中读出的n个字符的字符串PrivateSubForm_Click()Dims$,num%num=FreeFileOpenc:\a.datForInputAs#nums=Input$(43,#num)PrintsClose(num)EndSub顺序文件-例PrivateSubCommand1_Click()Openc:\file1.txtForOutputAs#1Print#1,Text1.TextClose(1)EndSubPrivateSubCommand2_Click()Dims$,s1$OnErrorGoTol1Openc:\file1.txtForInputAs#1DoUntilEOF(1)LineInput#1,s1s=s&s1&Chr(13)&Chr(10)LoopText1.Text=sClose(1)ExitSubl1:MsgBox“c:\file1.txt文件不存在,请_先创建文件!,,错误ExitSubEndSubPrivateSubCommand3_Click()text1.text=EndSub随机文件随机文件的记录定长,给出记录号n,就能计算出该记录与文件首记录的相对地址。因此用Open语句打开文件时必须指定记录的长度每个记录由若干字段组成,每个字段的长度就是相应变量的长度打开随机文件后,既可读也可写随机文件的读写操作随机文件的存取是以记录为单位的,所以在读写之前应先定义一个记录类型,用来存放记录中的各字段,同时指定记录长度•定义记录类型[Private|Public]Type自定义类型名成员名As类型[成员名As类型]……EndTypeTypeStudentNoAsSingleNameAsString*10DeptAsString*20EndType只能在标准模块中定义随机文件的读写操作打开随机文件Open“路径文件名”ForRandomAs[#]文件号[Len=记录长度]•打开随机文件后,既可读也可写•记录长度:各字段长度之和,以字符(字节)为单位•记录的缺省长度为128字节随机文件的读写操作•记录号的取值范围为1~231-1,缺省为下一个记录或字节的位置关闭文件与关闭顺序文件相同读写随机文件Get#文件号,[记录号],变量•读操作•写操作Put#文件号,[记录号],变量随机文件-例TypeStudentNoAsSingleNameAsString*10DeptAsString*20EndTypeDimstuAsStudentDimrecordAsIntegerPrivateSubForm_Load()OpenC:\stu.txtForRandomAs#100Len=Len(stu)Label4.Caption=总共有&LOF(100)/Len(stu)&条记录Close#100EndSub随机文件-例PrivateSubCommand1_Click()Withstu.Name=Text1.Text.No=Val(Text2.Text).Dept=Text3.TextEndWithOpenC:\stu.txtForRandomAs#100Len=Len(stu)record=LOF(100)/Len(stu)+1Label4.Caption=总共有&record&条记录Put#100,record,stuClose#100EndSub随机文件-例PrivateSubCommand2_Click()OpenC:\stu.txtForRandomAs#100Len=Len(stu)record=Val(Text4.Text)Get#100,record,stuText1.Text=stu.NameText2.Text=stu.NoText3.Text=stu.Deptrecord=LOF(100)/Len(stu)Label4.Caption=总共有&record&条记录Close#100EndSubPrivateSubCommand3_Click()Text1.Text=Text2.Text=Text3.Text=Text4.Text=EndSub二进制文件二进制文件可以保存任何类型的数据,是以字节为单位对文件进行访问操作打开二进制文件Open“路径文件名”ForBinaryAs[#]文件号•打开二进制文件后,既可读也可写写二进制文件读二进制文件Put#文件号,[位置],变量Get#文件号,[位置],变量•位置:是相对于文件开头,第1个字节位置是1,……二进制文件PrivateSubForm_Click()DimcharAsByteDimnum1%,num2%num1=FreeFileOpenc:\stu.datForBinaryAs#num1num2=FreeFileOpenc:\stu.bakForBinaryAs#num2DoWhileNotEOF(num1)Get#1,,charPut#2,,charLoopClose#1Close#2EndSub复制文件文件操作语句和函数FileCopy语句Kill语句Name语句ChDrive语句FileCopysource,destinationKillpathnameNameoldpathnameAsnewpathnameChDrivepathFileCopy“d:\mydoc\1.bmp”,“e:\sample.bmp”Kill“d:\mydoc\*.txt”Name“c:\pic\pic1.gif”as“c:\pic\p1.gif”ChDrive“d:”文件操作语句和函数MkDir语句ChDir语句RmDir语句CurDir函数MkDir目录ChDir目录RmDir目录得到驱动器的当前目录MkDir“imageMkDir“d:\mydoc\imagesChDir“c:\office2000RmDir“d:\mydoc只能删除空的子目录!CurDir[(drive)]CurDir(c:)CurDir()文件系统控件VB提供了三个文件系统控件:驱动器列表框、目录列表框和文件列表框都具有Enabled、Visible、Top、Left、Width、Height、List、ListIndex、ListCount等属性利用此三个控件可以编写文件管理程序驱动器列表框Drive属性用来设置或返回选择的驱动器名,只能在运行时设置驱动器列表框名称.Drive[=驱动器名]Change事件重新设置驱动器列表框的Drive属性时触发Click事件单击驱动器列表框时触发目录列表框用来显示当前驱动器上的目录结构Path属性用来设置或返回当前驱动器的路径,只能在运行时设置目录列表框.Path[=“路径”]Change事件当前目录改变时触发Click事件单击目录列表框时触发文件列表框用来显示当前目录下的文件Pattern属性用来设置运行时要显示的文件类型,即可在属性窗口设置,也可以在运行时设置文件列表框名.Pattern[=
本文标题:第12次大课-603709092Visual-Basic-清华大学vb编程语言基础-第12讲
链接地址:https://www.777doc.com/doc-3661981 .html