21世纪高等学校计算机基础教育系列教材 Bsc中的文件作 电出版
第10章 Visual Basic中的文件操作 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
文件概述 文件是把数据记录在外存储器上的集合。 ◆数据的特定的存放方式叫做文件结构,vb中文件有记录组成,记录由字 段组成,字段有字符组成 字符( character)是构成文件的基本单位,字符可以是字母、数字、特 殊符号、或单一字节,一个字符用一个字节存放(西文),汉字字符包 括汉字和全角符号,用两个字节存放。Vb支持双字节字符,当计算字符 串长度时,一个西文字符和一个汉字字符的长度均为1,但存储空间不 样 ◆Len(“Vb程序设计”)=6但占用存储空间是10字节 ◆字段(feld):也叫域,有若干个字符组成,表示一个数据项。 记录( record):有一组相关的字段组成 文件(fle):由记录组成,一个文件含有一条以上的记录 文件的种类 根据分类标准不同,文件的分类也不同
文件概述 文件是把数据记录在外存储器上的集合。 文件结构 数据的特定的存放方式叫做文件结构,vb中文件有记录组成,记录由字 段组成,字段有字符组成。 字符(character)是构成文件的基本单位,字符可以是字母、数字、特 殊符号、或单一字节,一个字符用一个字节存放(西文),汉字字符包 括汉字和全角符号,用两个字节存放。Vb支持双字节字符,当计算字符 串长度时,一个西文字符和一个汉字字符的长度均为1,但存储空间不 一样。 Len(“Vb程序设计”)=6 但占用存储空间是10字节。 字段(field):也叫域,有若干个字符组成,表示一个数据项。 记录(record):有一组相关的字段组成。 文件(file):由记录组成,一个文件含有一条以上的记录。 文件的种类 根据分类标准不同,文件的分类也不同
文件的分类依据及类别 ◆根据数据性质:程序文件和数据文件 ◆根据存放方式和结构:顺序文件和随机文件 顺序文件,结构比较简单,按次序排放记录,维护困难,存取不灵活, 但占用空间少,容易使用。 ◆随机文件,也称直接存取文件,在访问时不考虑各记录的位置或顺序, 可根据需要访问任意记录,各记录长度固定,均有记录号,只要知道记 录号就可以随机文件进行存取,可同时进行读写操作,可以快速修改 查询记录,比较灵活、方便,速度快,易修改,但占用空间大,数据组 织较复杂。 ◆根据编码方式:asc文件和二进制文件
文件的分类依据及类别 根据数据性质:程序文件和数据文件 根据存放方式和结构:顺序文件和随机文件 顺序文件,结构比较简单,按次序排放记录,维护困难,存取不灵活, 但占用空间少,容易使用。 随机文件,也称直接存取文件,在访问时不考虑各记录的位置或顺序, 可根据需要访问任意记录,各记录长度固定,均有记录号,只要知道记 录号就可以随机文件进行存取,可同时进行读写操作,可以快速修改、 查询记录,比较灵活、方便,速度快,易修改,但占用空间大,数据组 织较复杂。 根据编码方式:ascii文件和二进制文件
打开关闭文件 b中,数据文件的操作按下列步骤进行: 打开(或建立)文件2.进行读、写操作3关闭文件 一文件打开 open文件名[for方式] access存取类型][锁定]as文件号[en=记录长度 方式 output顺序输出方式 input顺序输入方式 append指定顺序输出方式 文件尾 Random随即存取方式(默认方式) binary二进制方式文件 Random方式中,如果不指定 access,则试图按以下次序打开文件 读/写只读只写 Binary/方式中,用Ee和请句对文件中任何字节位置的信息进行读写,如果没有aes句,和上面 存取类型 Read只读 write只写 read write读写(只对二进制文件、随机文件和 append方式有用。 锁定:在多用户或多进程的环境下使用。默认请况下,在文件打开期间,出奔晋城外的其他进程是不允 许存取文件的,主要有以下几类锁定方式: Lock shared任何机器上的任何进程都可以存取该文件 ◆ Lock read不允许其他进程读文件 Lock write不允许其他进程写文件 Lock read write不允许其他进程读写文件。默认方式 文件号:整型表达式,1-511 记录长度:整型表达式。<=32767,默认512时决定打开文件的缓冲区大小的一个选项。 为满足不同需要,可以对一个文件用几个不同的文件号打开。 0pen语句同时有建立和打开文件的功能。 文件关闭: close[#文件号],如果没有指定文件号,则关闭所有打开的文件
打开关闭文件 Vb中,数据文件的操作按下列步骤进行: 1. 打开(或建立)文件 2. 进行读、写操作 3.关闭文件 文件打开 Open 文件名 [for 方式] [access 存取类型] [锁定] as [#] 文件号 [ len=记录长度] 方式: output 顺序输出方式 input 顺序输入方式append 指定顺序输出方式 Append和output的区别:output指针置于文件头,append指针置于文件尾 Random 随即存取方式(默认方式) binary 二进制方式文件 Random方式中,如果不指定access,则试图按以下次序打开文件 读/写 只读 只写 Binary方式中,用get和put语句对文件中任何字节位置的信息进行读写,如果没有access语句,和上面 random方式中的次序一致 存取类型: Read 只读 write 只写 read write 读写(只对二进制文件、随机文件和append方式有用。) 锁定:在多用户或多进程的环境下使用。默认请况下,在文件打开期间,出奔晋城外的其他进程是不允 许存取文件的,主要有以下几类锁定方式: Lock shared 任何机器上的任何进程都可以存取该文件 Lock read 不允许其他进程读文件 Lock write 不允许其他进程写文件 Lock read write 不允许其他进程读写文件。默认方式。 文件号:整型表达式,1-511 记录长度:整型表达式。<=32767,默认512时决定打开文件的缓冲区大小的一个选项。 为满足不同需要,可以对一个文件用几个不同的文件号打开。 Open语句同时有建立和打开文件的功能。 文件关闭:close [#文件号],如果没有指定文件号,则关闭所有打开的文件
文件操作语句与函数 文的主要操作:读和写 ◆文件指针,文件打开后自动生成一个隐含的文件指针,文件的读写操作就从指针出开始。 文件指针定位用: #文件号,位置来实现,指针位置取值范围在1-(232-1)间 可以用seek函数来判断指针位置seek(文件号)取得一个在1-(232-1)之间的数 Freefile可以得到一个在程序中一打开但还没有使用的文件,也可以利用本函数把为使用的 文件号给一个变量,从而可以直接引用文件号变量,而省去了记忆文件号的麻烦。 Private Sub Form Click FileName$= InputBox$("输入要打开的文件得文件名") ◆ filenum= FreeFile freeride财文件号 hangopend as file 1 Open FileName S For Output As filenum maopend as file 1 Print FileName S; "opend as file filenum Close #filenum 关闭文件并退出 End Sub Private Sub Command1 Click freebie文件号 Close zhangopend as file 1 王 opend as file#2 End End sub 闭文件并退出
文件操作语句与函数 文件的主要操作:读和写 文件指针,文件打开后自动生成一个隐含的文件指针,文件的读写操作就从指针出开始。 文件指针定位用: seek #文件号, 位置 来实现,指针位置取值范围在1-(232-1)间 可以用seek函数来判断指针位置 seek(文件号) 取得一个在1-(232-1)之间的数。 Freefile 可以得到一个在程序中一打开但还没有使用的文件,也可以利用本函数把为使用的 文件号给一个变量,从而可以直接引用文件号变量,而省去了记忆文件号的麻烦。 Private Sub Form_Click() FileName$ = InputBox$("输入要打开的文件得文件名") filenum = FreeFile Open FileName$ For Output As filenum Print FileName$; "opend as file #"; filenum Close #filenum End Sub Private Sub Command1_Click() Close End End Sub
文件操作语句与函数 ●oc函数lc(文件号)返回当前文件号指定的的文件的读写位置 L0函数of(文件号)返回给定的文件的字节数(求文件长度) Eof函数eof(文件号)判断文件是否结束(指针是否已到文件尾)
Loc函数 loc(文件号) 返回当前文件号指定的的文件的读写位置。 Lof函数 lof(文件号) 返回给定的文件的字节数(求文件长度)。 Eof函数 eof(文件号) 判断文件是否结束(指针是否已到文件尾) 文件操作语句与函数
顺序文件 写操作 Print#语句 Print#文件号,[spc(n)tab(n)Ⅱ[表达式列表];, 把数据写入到文件中,其中的参数和prnt方法一致 实际上只是把文件内容写到缓冲区,然后又文件系统真正地写入顺序文件 ◆Wrte#语句 Wrte#文件号,表达式表 将表达式表写入到顺序文件中,但是文件必须以 output或 append方式打开。 ◆Wite#和 print#功能基本一样,区别在于使用 write#语句写数据时,数据在磁 盘上以紧凑格式存放,能自动在数据之间加,并给字符串加双引号 Write#语句写入证书的前面没有空格 ◆如果用wite#语句将数据写入到一个加lock定义的文件,系统会报错
顺序文件 写操作: Print #语句 Print #文件号 ,[[spc(n)|tab(n)][表达式列表][;|,]] 把数据写入到文件中,其中的参数和print方法一致。 实际上只是把文件内容写到缓冲区,然后又文件系统真正地写入顺序文件。 Write #语句 Write #文件号, 表达式表 将表达式表写入到顺序文件中,但是文件必须以output或append方式打开。 Write# 和print#功能基本一样,区别在于使用write#语句写数据时,数据在磁 盘上以紧凑格式存放,能自动在数据之间加,并给字符串加双引号 Write#语句写入证书的前面没有空格。 如果用write#语句将数据写入到一个加lock定义的文件,系统会报错
顺序文件 读操作 nput语句 ◆ Input#文件号,变量表,从顺序文件中读出数据,赋给变量 ◆ Line input#语句 line input#文件号,字符串变量 ◆从顺序文件中读取一个完整的行,赋给字符串变量。 ◆nput$函数 · Inputs(n,#文件号),从指定文件中读取n个字符的字符串
顺序文件 读操作: Input#语句 Input #文件号,变量表,从顺序文件中读出数据,赋给变量。 Line input # 语句 line input #文件号,字符串变量 从顺序文件中读取一个完整的行,赋给字符串变量。 Input$函数 Input$(n,#文件号),从指定文件中读取n个字符的字符串
随机文件 ◆特点:记录定长 记录分成若干字段 ◆个变量按一定格式植入相应字段 ◆随机文件打开后,既可读也可写 ◆打开随机文件: Open文件名 for random as#文件号[en=记录长度] 写操作 Put#文件号,[记录号],变量 例如put#1,125, record1 读操作: Get#语句 ◆Get#文件号,[记录号],变量。(可能是重点的内容,和自定义数据 类型结合起来考察)
随机文件 特点:记录定长 记录分成若干字段 个变量按一定格式植入相应字段 随机文件打开后,既可读也可写 打开随机文件: Open 文件名 for random as #文件号[ len=记录长度] 写操作: Put #文件号,[记录号],变量 例如 put #1,125,record1 读操作: Get#语句 Get #文件号,[记录号],变量。 (可能是重点的内容,和自定义数据 类型结合起来考察)
文件系统控件 口回画 ◆驱动器列表框,我们需要修改它的一个 属性就是 drive,只能通过程序来修改 文件夹列表框 Private Sub Dir1 Changeo 文件系统控件 File1. Path Dir1 Path READMEVB.HTM▲ REDIST. TXT End sub REPVB DLL sybase REPVBRC DLL BTIM DLL SCCVBUS.CHI 文件名列表框 SCCVBUS. CHM IWin-TC Private Sub Drive1 ChangeO IWPSoffice Docu B6DEBUG DLL nWUTemp VB6EXT OLB VB6IDE DLL Dir1 Path Drivel Drive nzhang /BAEXE6 LIB End sub
文件系统控件 驱动器列表框,我们需要修改它的一个 属性就是drive,只能通过程序来修改 文件夹列表框 Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub 文件名列表框 Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub