VisualBasic程序设计项目化教程 项目11 文件管理器.ppt_第1页
VisualBasic程序设计项目化教程 项目11 文件管理器.ppt_第2页
VisualBasic程序设计项目化教程 项目11 文件管理器.ppt_第3页
VisualBasic程序设计项目化教程 项目11 文件管理器.ppt_第4页
VisualBasic程序设计项目化教程 项目11 文件管理器.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual Basic 程序设计项目化教程,主编 管小清 郭贺彬,项目十一 文件管理器,项目主要知识点: 1、文件结构 字符 字段 记录 文件 2、文件分类 按数据性质分类 按数据存取方式和结构分类 按数据编码方式分类,项目十一 文件管理器,3、文件基本操作 拷贝文件 删除文件 文件重命名 创建新的目录 改变当前驱动器 改变当前目录 删除目录 确定当前目录驱动器 4、文件的打开与关闭的使用方法,项目十一 文件管理器,5、文件操作语句和函数 6、顺序文件的写操作 Print#语句 Write#语句 7、顺序文件的读操作 Input#语句 Line input#语句 input#函数 8、随机文

2、件打开、关闭操作,项目十一 文件管理器,9、随机文件的读操作 10、打开系统文件 11、文件的移动、复制和删除 12、文件对象file的属性 13、文件系统对象 14、Animation控件的使用 常用属性 常用方法,项目十一 文件管理器,15、文件系统控件的应用 驱动器列表框 目录列表框 文件列表框 16、Shell()函数 17、复杂的程序构思,以及编程能力,项目十一 文件管理器,项目实施步骤: 阅读相关基础知识 界面设计 窗体设计 控件属性设置 程序设计 编程初步 程序代码 程序调试,功能完善 保存项目工程和再次打开工程,11.1 第1步:文件基础知识,为了有效地存取数据,数据必须以某种

3、特定的方式存放,这种特定的方式称为文件结构。VB文件是由记录组成的,记录是由字段组成的,字段是由字符组成的。 11.1.1 文件结构 1、字符(Character):是构成文件的最基本单位。字符可以是数字、字母、特殊符号或单一字节。这里所说的“字符”一般为西文字符,一个西文字符用一个字节存放。如果为汉字字符,包括汉字和“全角”字符,则通常用两个字节存放。也就是说,一个汉字字符相当于两个西文字符。一般把用一个字节存放的西文字符称为“半角”字符,而把汉字和用两个字节存放的字符称为“全角”字符。注意,VB 6.0支持双字节字符,当计算字符串长度时,一个西文字符和一个汉字都作为一个字符计算,但它们所占

4、的内存空间是不一样的。例如,字符串“VB程序设计”的长度为6,而所占的字节数为10。,11.1 第1步:文件基础知识,2、字段(Field):也称域。字段由若干个字符组成,用来表示一项数据。例如邮政编码“100084”就是一个字段,它由6个字符组成。而姓名“刘大平”也是一个字段,它由3个汉字组成。 3、记录(Record):由一组相关的字段组成。例如在通信录中,每个人的姓名、单位、地址、电话号码、邮政编码等构成一个记录,如在VB中,以记录为单位处理数据。 4、文件(File):文件由记录构成,一个文件含有一个以上的记录。例如在通信录文件中有100个人的信息,每个人的信息是一个记录,100个记录

5、构成一个文件。,11.1.2 文件分类,根据不同的分类标准,文件可分为不同的类型。 1、按数据性质分类 按数据性质,文件可分为程序文件和数据文件。 程序文件(Program File):这种文件存放的是可以由计算机执行的程序,包括源文件和可执行文件。在VB中,扩展名为.exe、.frm、.vbp、.vbg、.bas、.cls等的文件都是程序文件。 数据文件(Data File):数据文件用来存放普通的数据。例如学生考试成绩、职工工资、商品库存等。这类数据必须通过程序来存取和管理。 2、按数据的存取方式和结构分类 按数据的存取方式和结构,文件可分为顺序文件和随机文件。 顺序文件(Sequenti

6、al File):顺序文件的结构比较简单,文件中的记录一个接一个地存放。在这种文件中,只知道第一个记录的存放位置,其他记录的位置无从知道。当要查找某个数据时,只能从文件头开始,一个记录一个记录地顺序读取,直至找到要查找的记录为止。,11.1.2 文件分类,优点:顺序文件的组织比较简单,只要把数据记录一个接一个地写到文件中即可,占用空间少,容易使用。 缺点:维护困难,为了修改文件中的某个记录,必须把整个文件读入内存,修改完后再重新写入磁盘。顺序文件不能灵活地存取和增减数据,因而适用于有一定规律且不经常修改的数据。 随机存取文件(Random Access File):又称直接存取文件,简称随机文

7、件或直接文件。在随机文件中,每个记录的长度是固定的,记录中的每个字段的长度也是固定的。此外,随机文件的每个记录都有一个记录号。在写入数据时,只要指定记录号,就可以把数据直接存入指定位置。而在读取数据时,只要给出记录号,就能直接读取该记录。在随机文件中,可以同时进行读、写操作,因而能快速地查找到每个记录,不必为修改某个记录而对整个文件进行读、写操作。 优点:数据的存取较为灵活、方便,速度较快,容易修改。 缺点:占空间较大,数据组织较复杂。,11.1.2 文件分类,3、按数据的编码方式分类 按数据的编码方式,文件可以分为ASCII文件和二进制文件。 ASCII文件:又称文本文件,它是以ASCII方

8、式保存的文件。这种文件可以用字处理软件建立和修改(必须按纯文本文件保存)。 二进制文件(Binary File):它是用二进制方式保存的文件。二进制文件不能用普通的字处理软件编辑,占空间较小。,11.1.3 文件基本操作,文件的基本操作指的是文件的删除、拷贝、移动、改名等。在VB中,可以通过相应的语句执行这些基本操作。 (1)、拷贝文件(FileCopy语句) 格式:FileCopy 源文件名,目标文件名 功能:可以把源文件拷贝到目标文件,拷贝后两个文件的内容完全一样。 说明:打开的文件不能拷贝。拷贝文件不能含有通配符(*或?)。 例如: FileCopy A1.doc,A2.doc 将把当前

9、目录下的一个文件拷贝到同一目录下的另一个文件。 例如:如果将一个目录下的一个文件拷贝到另一个目录下,则必须包括路径信息。 FileCopy c:VBA1.doc,c:VB1A2.doc VB没有提供移动文件的语句。实际上,先用FileCopy语句拷贝文件,然后用Kill语句将源文件名删除。,11.1.3 文件基本操作,(2)、删除文件(Kill语句) 格式:Kill 文件名 功能:用该语句可以删除指定的文件。 说明:“文件名”可以含有路径。 Kill语句具有一定的“危险性”,因为在执行该语句时没有任何提示信息。为了安全起见,当在应用程序中使用该语句时,一定要在删除文件前给出适当的提示信息。,1

10、1.1.3 文件基本操作,(3)、文件(目录)重命名(Name语句) 格式:Name 原文件名 As 新文件名 功能:可以对文件或目录重命名,也可用来移动文件。 说明:新文件名不能是已存在的文件名。在原文件名和新文件名中,不能使用通配符“*”和“?”。 在一般性情况下,“原文件名”和“新文件名”必须在同一驱动器上。如果“新文件名”指定的路径存在并且与“原文件名”指定的路径不同,则Name语句将把文件移动到新的目录下,并更改文件名。如果“新文件名”与“原文件名”指定的路径不同但文件名相同,则Name语句将把文件移到新的目录下,且保持文件名不变。,11.1.3 文件基本操作,将原文件从VB1目录下

11、移到VB2目录下并重新命名。 用Name语句可以移动文件,不能移动目录,但可以对目录重命名。 (4)、创建新的目录(MkDir语句) 格式:MkDir Path 功能:创建一个新的目录。 (5)、改变当前驱动器(ChDrive语句) 格式:ChDrive Drive 功能:改变当前驱动器。 说明:如果Drive为 ,则当前驱动器将不会改变;如果Drive中有多个字符,则ChDrive只会使用首字母。,11.1.3 文件基本操作,(6)、改变当前目录(ChDir语句) 格式:ChDir Path 功能:改变当前目录。 说明:ChDir语句只能改变缺省目录位置,但不会改变缺省驱动器位置。 例如,如

12、果缺省驱动器是C,则下面的语句将会改变驱动器D中VB为缺省目录,但是C仍然是缺省的驱动器。 ChDir D:VB (7)、删除目录(RmDir语句) 格式: RmDir Path 功能:删除一个已存在的目录。 说明:RmDir语句不能删除一个含有文件的目录。如果要删除,则应先使用Kill语句删除所有的文件。 (8)、确定当前目录驱动器(CurDir函数) 格式: CurDir (drive) 功能:确定任何一个驱动器的当前目录。 说明:drive表示要确定当前目录驱动器。drive为,则CurDir返回当前驱动器的当前目录路径。,11.1.4 文件的打开与关闭的使用方法:,1、文件的打开(建立

13、) 格式: Open 文件名 For方式Random存取类型As#文件号Len=记录长度 功能:为文件的输入输出分配缓冲区,并确定缓冲区所使用的存取方式。或者建立一个文件。 说明: 方式:指定文件的输入输出方式,可以是下述方式之一: Output:指定顺序输出方式。 Input:指定顺序输入方式。 Append:指定顺序输出方式。与Output不同的是,当用Append方式打开文件时,文件指针被定位在文件末尾。如果对文件执行写操作,则写入的数据附加到原来文件的后面。 Random:指定随机存取方式,也是默认方式。,11.1.4 文件的打开与关闭的使用方法:,Binary:指定二进制方式文件。在

14、这种方式下,可以用Get和Put语句对文件中任何字节位置的信息进行读写。打开文件的类型与Random方式相同。 “方式”:是可选的,如果省略,则为随机存取方式,即Random。 说明: 存取类型:用来指定访问文件的类型。可以是下列类型之一: Read:打开只读文件。 Write:打开只写文件。 Read Write:打开读写文件。这种类型只对随机文件、二进制文件及用Append方式打开的文件有效。 “存取类型”指出了在打开的文件中所进行的操作。如果要打开的文件已由其他过程打开,则不允许指定存取类型,否则Open失败,并产生出错信息。,11.1.4 文件的打开与关闭的使用方法:,文件号:是一个整

15、型表达式,其值为1511范围内。执行Open语句时,打开文件的文件号与一个具体的文件相关联,其他输入输出语句或函数通过文件号与文件发生关系。 记录长度:是一个整型表达式。当选择该参量时,为随机存取文件设置记录长度。对于用随机访问方式打开的文件,该值是记录长度;对于顺序文件,该值是缓冲字符数。“记录长度”的值不能超过32 767字节。对于二进制文件,将忽略Len子句。,11.1.4 文件的打开与关闭的使用方法:,在顺序文件中,“记录长度”不需要与各个记录的大小相对应,因为顺序文件各个记录的长度可以不相同。当打开顺序文件时,在把记录写入磁盘或从磁盘读出记录之前,“记录长度”指出要装入缓冲区的字符数

16、,即确定缓冲区的大小。缓冲区越大,占用空间越多,文件的输入输出操作越快。反之,缓冲区越小,剩余的内存空间越大,文件的输入输出操作越慢。默认时缓冲区的容量为512字节。 另外,为了满足不同的存取方式的需要,对同一个文件可以用几个不同的文件号打开,每个文件号有自己的一个缓冲区。对于不同的访问方式,可以使用不同的缓冲区。但是,当使用Output或Append方式时,必须先将文件关闭,才能重新打开文件。而当使用Input、Random或Binary方式时,不必关闭文件就可以用不同的文件号打开文件。,11.1.4 文件的打开与关闭的使用方法:,2、文件的关闭 文件的读写操作结束后,应将文件关闭,这可以通

17、过Close语句来实现。 格式: Close#文件号,#文件号 功能:用来结束文件的输入输出操作。 说明: Close语句用来关闭文件,它是在打开文件之后进行的操作。格式中的“文件号”是Open语句中使用的文件号。关闭一个数据文件具有两方面的作用,第一,把文件缓冲区中的所有数据写到文件中;第二,释放与该文件相联系的文件号,以供其他Open语句使用。,11.1.4 文件的打开与关闭的使用方法:,Close语句中的“文件号”是可选的。如果指定了文件号,则把指定的文件关闭;如果不指定文件号,则把所有打开的文件全部关闭。 除了用Close语句关闭文件外,在程序结束时将自动关闭所有打开的数据文件。 Cl

18、ose语句使VB结束对文件的使用,它的操作十分简单,但绝不是可有可无的。这是因为,磁盘文件同内存之间的信息交换是通过缓冲区进行的。如果关闭的是为顺序输出而打开的文件,则缓冲区中最后的内容将被写入文件中。当打开的文件或设备正在输出时,执行Close语句后,不会使输出信息的操作中断。如果不使用Close语句关闭文件,则可能使某些需要写入的数据不能从内存(缓冲区)送入文件中。,11.1.5 文件操作语句和函数,文件的主要操作是读和写,在此介绍的是通用的语句和函数,这些语句和函数用于文件的读、写操作中。 1、文件指针定位语句Seek 文件被打开后,自动生成一个文件指针(隐含的),文件的读或写就从这个指

19、针所指的位置开始。用Append方式打开一个文件后,文件指针指向文件的末尾,而如果用其他几种方式打开文件,则文件指针都指向文件的开头。完成一次读写操作后,文件指针自动移到下一个读写操作的起始位置,移动量的大小由Open语句和读写语句中的参数共同决定。对于随机文件来说,其文件指针的最小移动单位是一个记录的长度;而顺序文件中文件指针移动的长度与它所读写的字符串的长度相同。在VB中,与文件指针有关的语句和函数是Seek。 文件指针的定位通过Seek语句来实现。 格式:Seek# 文件号,位置功能:该语句用来设置文件中下一个读或写的位置。,11.1.5 文件操作语句和函数,说明: “文件号”的含义同前

20、; “位置”是一个数值表达式,用来指定下一个要读写的位置,其值在1(231-1)范围内。 对于用Input、Output或 Append方式打开的文件,“位置”是从文件开头到“位置”为止的字节数,即执行下一个操作的地址,文件第一个字节的位置是1。对于用 Random方式打开的文件,“位置”是一个记录号。 在 Get或 Put语句中的记录号优先于由 Seek语句确定的位置。此外,当“位置”为0或负数时,将产生出错信息“错误的记录号”。当Seek语句中的“位置”在文件尾之后时,对文件的写操作将扩展该文件。 2、Seek函数 与Seek语句配合使用的是Seek函数。 格式:Seek(文件号) 功能:

21、该函数返回文件指针的当前位置。,11.1.5 文件操作语句和函数,说明: 由Seek函数返回的值在1(231-1)范围内。 对于用Input、Output或Append方式打开的文件,Seek函数返回文件中的字节位置(产生下一个操作的位置)。 对于用Random方式打开的文件,Seek函数返回下一个要读或写的记录号。 对于顺序文件,Seek语句把文件指针移到指定的字节位置上,Seek函数返回有关下次将要读写的位置信息。 对于随机文件,Seek语句只能把文件指针移到一个记录的开头,而Seek函数返回的是下一个记录号。 3、FreeFile函数 格式:变量=FreeFile 功能:用FreeFil

22、e函数可以得到一个在程序中没有使用的文件号。 说明:当程序中打开的文件较多时,这个函数很有用。特别是当在通用过程中使用文件时,用这个函数可以避免使用其他Sub 或Function过程中正在使用的文件号。利用这个函数,可以把未使用的文件号赋给一个变量,用这个变量作文件号,不必知道具体的文件号是多少。,11.1.5 文件操作语句和函数,4、Loc函数 格式:Loc(文件号) 功能:Loc函数返回由“文件号”指定的文件的当前读写位置。 说明: 格式中的“文件号”是在Open语句中使用的文件号。 对于随机文件,Loc函数返回一个记录号,它是对随机文件读或写的最后一个记录的记录号,即当前读写位置的上一个

23、记录; 对于顺序文件,Loc函数返回的是从该文件被打开用来读或写的记录个数,一个记录是一个数据块。 顺序文件和随机文件中,Loc函数返回的都是数值,但它们的意义是不一样的。对于随机文件,只有知道了记录号,才能确定文件中的读写位置;而对于顺序文件,只要知道已经读或写的记录个数,就能确定该文件当前的读写位置。,11.1.5 文件操作语句和函数,5、LOF函数 格式:LOF(文件号) 功能:LOF函数返回给文件分配的字节数(即文件的长度)。 说明: 与DOS下用Dir命令所显示的数值相同。 “文件号”的含义同前。 在VB中,文件的基本单位是记录,每个记录的默认长度是128个字节。因此,对于由VB建立

24、的数据文件,LOF函数返回的将是128的倍数,不一定是实际的字节数。例如,假定某个文件的实际长度是257(1282+1)个字节,则用LOF函数返回的是384(1283)个字节。对于用其他编辑软件或字处理软件建立的文件,LOF函数返回的将是实际分配的字节数,即文件的实际长度。,11.1.5 文件操作语句和函数,6、EOF函数 格式:EOF(文件号) 功能:EOF函数用来测试文件的结束状态。 说明: 在文件输入期间,可以用EOF测试是否到达文件末尾。 对于顺序文件来说,如果已到文件末尾,则EOF函数返回True,否则返回False。 对于随机文件来说,如果最后执行的Get语句未能读到一个完整的记录

25、,则返回True,这通常发生在试图读文件结尾以后的部分时。,11.1.6 顺序文件的写操作,在顺序文件中,记录的逻辑顺序与存储顺序相一致,对文件的读写操作只能一个记录地顺序进行。 顺序文件的读写操作与标准输入输出十分类似。其中读操作是把文件中的数据读到内存,标准输入是从键盘上输入数据,而键盘设备也可以看作是一个文件。写操作是把内存中的数据输出到屏幕上,而屏幕设备也可以看作是一个文件。 数据文件的写操作分为3步,即打开文件、写入文件和关闭文件。其中打开文件和关闭文件分别由Open和Close语句来实现,写入文件由Print#或Write#,11.1.6 顺序文件的写操作,语句来完成。 1、Pri

26、nt#语句 格式:Print#文件号,Spc(n)|Tab(n)表达式表;|, 功能:把数据写入文件中。 说明: Print#语句与Print方法的功能是类似的。Print方法所“写”的对象是窗体、打印机或控件,而Print#语句所“写”的对象是文件。 “文件号”的含义同前,数据被写入该文件号所代表的文件中。其他参量,包括Spc函数、Tab函数、“表达式表”及尾部的分号、逗号等,其含义与Print方法中相同。 格式中的“表达式表”可以省略。在这种情况下,将向文件中写入一个空行。,11.1.6 顺序文件的写操作,和Print方法一样,Print# 语句中的各数据项之间可以用分号隔开,也可以用逗号

27、隔开,分别对应紧凑格式和标准格式。数值数据由于前有符号位,后有空格,因此使用分号不会给以后读取文件造成麻烦。但是,对于字符串数据,特别是变长字符串数据来说,用分号分隔就有可能引起麻烦,因为输出的字符串数据之间没有空格。 实际上,Print#语句的任务只是将数据送到缓冲区,数据由缓冲区写到磁盘文件的操作是由文件系统来完成的。对于用户来说,可以理解为由Print#语句直接将数据写入磁盘文件。但是,执行Print#语句后,并不是立即把缓冲区中的内容写入磁盘,只有在满足下列条件之一时才写盘: 关闭文件(Close); 缓冲区已满; 缓冲区未满,但执行下一个Print#语句。,11.1.6 顺序文件的写

28、操作,2、Write#语句 格式:Write #文件号,表达式表 功能:可以把数据写入顺序文件中。 说明: 当使用Write#语句时,文件必须以Output或Append方式打开。“表达式表”中的各项以逗号分开。 Write#语句与Print#语句的功能基本相同。二者区别有以下两点: 二者区别有以下两点: 当用Write#语句向文件写数据时,数据在磁盘上以紧凑格式存放,能自动地在数据项之间插入逗号,并给字符串加上双引号。一旦最后一项被写入,就插入新的一行。 用Write#语句写入的正数的前面没有空格。,11.1.7 顺序文件的读操作,顺序文件的读操作分3步进行,即打开文件、读数据文件和关闭文件

29、。其中打开文件和关闭文件的操作如前所述,读数据的操作由Input#语句和Line Input#语句来实现。 1、Input# 语句 格式:Input#文件号,变量表 功能:该语句从一个顺序文件中读出数据项,并把这些数据项赋给程序变量。,11.1.7 顺序文件的读操作,说明: “变量表”由一个或多个变量组成,这些变量既可以是数值变量,也可以是字符串变量或数组元素,从数据文件中读出的数据赋给这些变量。文件中数据项的类型应与Input#语句中变量的类型匹配。 在用Input#语句把读出的数据赋给数值变量时,将忽略前导空格、回车或换行符,把遇到的第一个非空格、非回车和换行符作为数值的开始,如果遇到空格

30、、回车或换行符,则认为数值结束。对于字符串数据,同样忽略开头的空格、回车或换行符。如果需要把开头带有空格的字符串赋给变量,则必须把字符串放在双引号中。 Input#与InputBox函数类似,但InputBox要求从键盘上输入数据,而Input#语句要求从文件中输入数据,而且执行Input#语句时不显示对话框。 Input#语句也可用于随机文件。 2、Line Input#语句 格式:Line Input#文件号,字符串变量 功能:该语句从顺序文件中读取一个完整的行,并把它赋给一个字符串变量。,11.1.7 顺序文件的读操作,说明: “字符串变量”是一个字符串简单变量名,也可以是一个字符串数组

31、元素名,用来接收从顺序文件中读出的字符行。 它可以读取顺序文件中一行的全部字符,直至遇到回车符为止。此外,对于以ASCII码存放在磁盘上的各种语言源程序,都可以用Line Input#语句一行一行地读取。 Line Input#与Input#语句功能类似 。只是Input#语句读取的是文件中的数据项,而Line Input#语句读的是文件中的一行。 Line Input#语句也可用于随机文件。 Line Input#语句常用来复制文本文件。 3、Input$函数 格式:Input$(n,#文件号) 功能:该函数返回从指定文件中读出的n个字符的字符串。也就是说,它可以从数据文件中读取指定数目的字

32、符。,11.1.7 顺序文件的读操作,说明: Input$函数执行所谓“二进制输入”。它把一个文件作为非格式的字符流来读取。例如,它不把回车换行序列看做是一次输入操作的结束标志。因此,当需要用程序从文件中读取单个字符时,或者是用程序读取一个二进制的或非ASCII码文件时,使用Input$函数较为方便。,11.1.8 随机文件的打开操作,打开一个随机文件后,既可用于写操作,也可用于读操作。 格式: Open 文件名 For Random As#文件号Len=记录长度 功能:打开一个随机文件。 说明: (1)文件以随机访问模式打开后,可以同时进行写入和读出操作。 (2)“记录长度”等于各字段长度之

33、和,以字符(字节)为单位。要指明“记录长度”,否则记录的默认长度为128个字节。,11.1.9 随机文件的关闭操作,格式:Close #文件号,#文件号 功能:关闭随机文件。,11.1.10 随机文件的写操作,随机文件的写操作通过Put语句来实现。 格式: Put #文件号,记录号,变量 功能:将一个记录变量的内容写入所打开的磁盘文件中指定的记录位置处。,11.1.10 随机文件的写操作,说明: (1)这里的“变量”是除对象变量和数组变量外的任何变量(包括含有单个数组元素的下标变量)。 (2)记录号是大于1的整数,表示写入的是第几条记录。如果忽略记录号,则表示在当前记录后插入一条记录。,11.

34、1.11 随机文件的读操作,从随机文件中读取数据的操作与写文件操作步骤类似,只是把第三步中的Put语句用Get语句来代替。 格式:Get #文件号,记录号,变量 功能:从磁盘文件中,将一条记录号指定的记录内容读到记录变量中。,11.1.11 随机文件的读操作,说明: (1)“记录号”的取值范围同前,它是要读的记录的编号。 (2)记录号是大于1的整数,表示对第几条记录进行操作。如果忽略记录号,则表示读出当前记录后的那一条记录。 (3)如果省略“记录号”,则逗号不能省略。,11.1.12 打开系统文件,可以使用公共对话框与Shell函数配合使用来打开系统文件 通过使用新的面向对象的FSO对象,如C

35、opy、Delete、Move以及OpenASTextStream,或者使用传统的函数,如Open、Close、FileCopy、FileCopy、GetAttr等等,可以使用VB中的文件。 注意:在进行文件的移动、复制或删除时,不用考虑其类型。 如果要打开特殊的文件(如*.avi类型)则要配合相应的播放器,11.1.13 文件的移动、复制和删除,对文件的移动、复制和删除,FSO都提供了两种方法,见表11-1,表11-1 文件的移动、复制和删除的方法,11.1.14 文件的移动、复制和删除,文件对象File的属性如表11-2所示:,11.1.15 文件系统对象(File System Obje

36、ct),FSO对象模型包括表11-3所示对象,表11-3 FSO包括的对象,11.1.15 文件系统对象(File System Object),FSO对象模型包含在一个称为Scripting的类型库中,此类型库位于Scrrun.Dll文件中。如果还没有引用此文件,从“工程”下拉菜单中的“引用”对话框选择“MicroSoft Scripting Running”项,然后就可以使用该对象模型了。 注:如果没有引用,而直接使用会出错,11.2 第2步:Animation控件的知识,动画控件(Animation)是用来显示动画效果的。该控件只能播放无声的.Avi文件,且该控件只能显示未压缩的.Avi

37、 文件。在 Windows98 中,文件复制进度栏就是使用动画控件调用.Avi文件的一个实例。 说明:Animation 控件的加载方法 “工程”“部件” “控件” MicroSoft Windows Common Controls-2.60,11.2.1 动画控件的常用属性,1、AutoPlay属性 在将.Avi 文件加载到控件时,返回或设置一值,该值确定动画控件是否开始播放 .Avi 文件。另外用 AutoPlay属性播放的.Avi文件将不断重复,直到AutoPlay 的设置为 False 时为止。 2、BackStyle属性 该属性返回或设置一个值,该值确定动画控件是在透明的背景上还是在

38、动画剪辑中所指定的背景颜色上绘制动画。在运行时为只读。 0(缺省)表示透明的,控件的背景颜色是可见的。 1表示不透明的,动画剪辑中指定的背景颜色将充满控件并覆盖其背后的所有颜色。 3、Center属性 在动画控件内确定.Avi文件是否居中。当设置为True(缺省)时,根据图象的大小,在控件中心显示.Avi 文件。当设置为False时,.Avi 文件定位在控件内的0,0处。,11.2.1 动画控件的常用属性,4、Visible属性 返回或设置控件对象为可见或隐藏的值。 5、ToolTipText属性 返回或设置一个工具提示。 6、Enabled属性 返回或设置一个值,该值用来确定控件是否能够对用

39、户产生的事件作出反应。 7、BackColor属性 该属性返回或设置对象的背景颜色。 8、ForeColor属性 该属性返回或设置在对象里显示图片和文本的前景颜色。,11.2.2 动画控件的常用方法,1、Open 打开要播放的文件 打开一个要播放的.Avi文件。如果AutoPlay属性设置为True,则只要加载该文件,剪辑就开始播放它。在关闭.Avi文件或设置AutoPlay属性为False之前,它将不断重复播放。 语法:Object.Open 文件名 注:该控件只能播放无声的avi文件 2、Play 在Animation控件中播放.avi文件 语法:Objcet. Play=repeat,s

40、tart,end repeat为可选的整数,表示重复的次数,缺省为-1(不限制次数) start 指定开始的桢数,缺省值0 end 指定结束的桢数,缺省值-1,表示上次结束的桢, 最大值65535 3、Stop 中止播放的文件 该方法在动画控件中终止播放 .Avi 文件。Stop 方法仅终止那些用 Play 方法启动的动画。当设置AutoPlay 属性为 True 时,任何使用 Stop 方法的尝试都导致返回错误。,11.2.2 动画控件的常用方法,语法:Object.Stop 4、Close 关闭播放的文件 该方法使动画控件关闭当前打开的.Avi文件。如果没有加载任何文件,则Close不执行

41、任何操作,也不会产生任何错误 语法:Object.Close 11.3 第3步:文件系统控件的应用 VB提供了文件系统的控件有三种:驱动器列表框(DriveListBox)、目录列表框(DirListBox)、文件列表框(FileListBox)。利用这3个控件,可以建立Windows中的文件管理器目录窗口界面。,11.3.1 驱动器列表框,驱动器列表框(Drive ListBox)是一种下拉列表框,通常显示当前驱动器名称,如果单击列表框右端向下的箭头,则就会下拉出该计算机拥有的所有的驱动器名称,在一般情况下,只显示当前的磁盘驱动器名称。单击某个驱动器名,即可把它变为当前驱动器。 驱动器列表框

42、的基本属性: Name、Left、Top、Height、Width、Visible、Enabled等。目录列表框和文件列表框也具有这些基本属性。 驱动器列表框的特有属性: 驱动器列表框的特有属性只有一个Drive属性,用来设置或返回所选择的驱动器名。 格式: 名称.Drive=驱动器名,11.3.1 驱动器列表框,说明: (1)名称:是驱动器列表框的名称。 (2)这里的“驱动器名”是指定的驱动器,如果省略,则Drive属性是当前驱动器。 (3)Drive属性只能用程序代码设置,不能通过属性窗口设置。 常用事件 驱动器列表框最常用的事件是Change事件。每次重新设置Drive属性,都会引发Ch

43、ange事件。 驱动器列表框的默认名称为Drive1,其Chang事件过程的开头为Drive1_Change()。,11.3.2 目录列表框,目录列表框(DirListBox)用来显示当前驱动器上的目录结构及当前目录下的所有子目录。供用户选择其中的某个目录作为当前目录。在目录列表框中,如果用鼠标双击某个目录,就会显示该目录下的所有目录。 在目录列表框中只能显示当前驱动器上的目录。如果要显示其他驱动器上的目录,必须改变路径,即重新设置目录列表框的Path属性。 目录列表框的基本属性: Name、Left、Top、Height、Width、Visible、Enabled等。,11.3.2 目录列表

44、框,目录列表框的特有属性: 1、Path属性 格式: 对象.Path=路径名 功能:该属性适用于目录列表框和文件列表框,用来设置或返回当前驱动器的路径。 说明: (1)对象:窗体、目录列表框或文件列表框,如果省略了对象名,则为当前窗体。 (2)如果省略了路径,则显示当前路径。 “路径”的格式:驱动器名:文件夹名 Path属性只能在程序代码中设置,不能在属性窗口中设置。 常用事件 目录列表框的Path属性值改变时,将引发Change事件。文件列表框的Path属性改变时,将引发Change事件。,11.3.3 驱动器列表框和目录列表框的关系,必须同步驱动器列表框与目录列表框有着密切关系。在一般情况

45、下,改变驱动器列表框中的驱动器名后,目录列表框中的目录应当随之变为该驱动器上的目录,也就是使驱动器列表框和目录列表框必须产生同步效果。,11.4 第4步:界面设计,建立应用程序用户界面与设置对象属性 : 、在窗体上添加三个框架Frame1Frame3。 在Frame1和Frame3中添加两个驱动器列表框Deive1(Drive2),两个目录列表框Dir1(Dir2)以及两个文件列表框 File1(File2)。 、在Frame2中添加一个命令按钮控件数组 Command1(0) Command1(5) 、在窗体上添加一个Animation控件 相关属性修改为: BackStyle: 0 Cen

46、ter :True AutoPlay: True 、在窗体上添加公共对话框(CommonDialog) 、修改窗体、框架以及命令按钮的标题,11.4 第4步:界面设计,界面设计完毕后如图11-1所示,图11-1界面设计,11.5 第5步:程序设计,11.5.1 任务一:在“通用”过程中添加语句: 首先在“通用”过程中添加如下语句: Dim fso As New FileSystemObject, drv As Drive Dim fldr As Folder, fil As File, s As String 11.5.2 任务二:编写Drive1和Drive2的Change事件 Privat

47、e Sub Drive1_Change() Dir1.Path = Drive1.Drive ChDrive Drive1.Drive ChDir Dir1.Path End Sub Private Sub Drive2_Change() Dir2.Path = Drive2.Drive End Sub,11.5.3 任务三:编写Dir1和Dir2的Change事件,Private Sub Dir1_Change() File1.Path = Dir1.Path ChDir Dir1.Path End Sub Private Sub Dir2_Change() File2.Path = Dir

48、2.Path End Sub,11.5.4 任务四:编写File的Dbclick事件,Private Sub File1_DblClick() Shell (File1.FileName) 直接运行可执行文件(*.exe) End Sub,11.5.5 任务五:编写控件数组事件代码,Private Sub Command1_Click(Index As Integer) On Error GoTo errorhandler Set drv = fso.GetDrive(Drive1.Drive) Select Case Index Case 0 属性 Set fil = fso.GetFile

49、(File1.FileName) msg = 最后修改日期: & fil.DateLastModified & Chr(13) & Chr(13) msg = msg & 文件名: & fil.Name & Chr(13) & Chr(13) msg = msg & 文件长度: & fil.Size & Chr(13) & Chr(13) msg = msg & 文件类型: & fil.Type & Chr(13) & Chr(13) MsgBox msg, , 文件属性,11.5.5 任务五:编写控件数组事件代码,Case 1 复制 Set fil = fso.GetFile(File1.F

50、ileName) fil.Copy IIf(Right(Dir2.Path, 1) = , Dir2.Path, Dir2.Path & ) Case 2 移动 Set fil = fso.GetFile(File1.FileName) If Drive1.Drive Drive2.Drive Then MsgBox 不能在不同的驱动器间移动!, 48, 提示 Else fil.Move IIf(Right(Dir2.Path, 1) = , Dir2.Path, Dir2.Path & ) End If Case 3 删除 Set fil = fso.GetFile(File1.FileNa

51、me) msg = 真的要删除该文件吗? & Chr(13) & Chr(13) a = MsgBox(msg & fil, 289, 询问),11.5.5 任务五:编写控件数组事件代码,If a = 1 Then fil.Delete Else Exit Sub End If Case 4 更名 Set fil = fso.GetFile(File1.FileName) msg = 请输入新的文件名: & Chr(13) & Chr(13) & 原文件名为: a = InputBox(msg & fil, 重命名, fil.Name) If Len(Trim(a) 0) Then fil.N

52、ame = a Else MsgBox 您输入的文件名不能为空 Exit Sub End If,11.5.5 任务五:编写控件数组事件代码,Case 5 打开 CommonDialog1.Filter = avi(*.avi)|*.avi CommonDialog1.ShowOpen Animation1.AutoPlay = True Animation1.Open CommonDialog1.FileName End Select File1.Refresh 实现动态变化 File2.Refresh 实现动态变化 Exit Sub errorhandler: MsgBox 应该选择一个文件

53、!, , 错误 End Sub,11.6 第6步:运行程序,效果如图11-2所示:,11.7 第7步:程序测试,功能完善,项目总结: 文件系统对象的相关知识 属性 对象 方法 文件系统三个控件的配合使用以及同FSO的组合。 Dirve Dir File CommonDialog的使用方法 Animation 控件的知识 特点 属性 方法 Shell函数的语法格式 编程思想的培养,11.7 第7步:程序测试,功能完善,操作练习: 在C盘当前文件夹下建立一个名为Student.dat的顺序文件,当单击“输入”按钮时,可以使用输入对话框向文件中输入学生的学号和姓名,单击“显示”按钮时,可以将所有学生

54、的学号和姓名显示在窗体上。 通过界面输入每个人的序号、姓名、电话号码和通信地址,单击“确定”按钮将每个人的信息存入一随机文件中,文件的保存位置和姓名任意。 打开第2题建立的随机文件,在输入某人的姓名之后找出相应的信息,并将结果显示在窗体上。 制作一个完善的记事本程序,能够实现外存文件的装入、修改并保存,可以新建文件。运行界面如图11-9所示。,11.7 第7步:程序测试,功能完善,一、选择题: 1、下列不属于VB数据文件的是( ) A.顺序文件 B.随机文件 C.二进制文件 D.数据库文件 2、以下叙述中正确的是() .一个记录中所包含的各个元素的数据类型必须相同 .随机文件中每条记录的长度是

55、固定的 .open命令的作用是打开一个已经存在的文件 .使用Input语句可以从随机文件中读取数据 3、按文件中数据的编码方式可将文件分为() .顺序文件和随机文件 B.ASCII码文件和二进制文件 C.程序文件和数据文件 .源程序和可执行文件 4、按文件的存取方式可将文件分为( ) .顺序文件和随机文件 B.ASCII码文件和二进制文件 C.程序文件和数据文件 .源程序和可执行文件,11.7 第7步:程序测试,功能完善,5、下列关于VB6.0文件命名规则的叙述中,正确的说法是( ) .可以在文件名中使用 * 和 ? B.文件名可以为任意长度 C.与windows命名方式一致 .支持传统的命名

56、方式:8位主名3位扩展名 6、关于顺序文件和随机文件的说法错误的是( ) .顺序文件中记录的逻辑顺序与存储数据一致 B.随机文件的读写操作比顺序文件灵活 C.随机文件的结构特点是记录长度固定以及每条记录均有记录号 .随机文件的操作与顺序文件相同 7、下列叙述中,不正确的是( ) .在一个程序执行End语句后,系统自动将所有打开的文件关闭 B.可以使用Close语句关闭一个或几个文件 C.使用不带语句的体的Close语句可关闭所有文件 .执行完一个程序的所有语句程序自动关闭文件,11.7 第7步:程序测试,功能完善,8、文件操作的一般顺序( ) .打开文件操作 B.打开文件关闭文件操作 C. 打

57、开文件操作关闭文件 .操作关闭文件 9、对于Close语句,下列说法正确的是( ) .与Unload语句作用一样,用来关闭窗体文件 B.关闭对象和控件 C. 关闭用Open语句打开的文件 .一个语句只能关闭一个文件 10、下列关于LOC( )函数说法正确的是( ) .对于随机方式打开的文件返回上一次对文件进行读出或写入的记录号 B. 对于顺序方式打开的文件返回上一次读出或写入的字节位置 C. 对于二进制方式打开的文件返回当前字节位置除以118的值 .对于文本方式打开的文件返回当前值,11.7 第7步:程序测试,功能完善,11、LOF( )函数的作用是返回一个( ) .Long型数据,在已打开的

58、文件中指定当前读/写位置 B.Long型数据,表示用Open语句打开的文件大小 C. Integer型数据,表示文件号的范围 .Boolean型数据,表明是否已经达到文件的结尾 12、以下能判断是否到达文件尾的函数是( ) .BOF B.LOC C. LOF . EOF 13、为了把一个记录型变量的内容写入文件中指定的位置,所使用的语句的格式为( ) .Get文件号,记录号,变量名 B.Get文件号,变量名,记录号 C. Put文件号,变量名,记录号 . Put文件号,记录号,变量名,11.7 第7步:程序测试,功能完善,14、以下能正确定义数据TelBook的代码是( ) .Type Tel

59、Book Name As string * 10 TelNum AS Integer End Type B. Type TelBook Name As string * 10 TelNum AS Integer End TelBook C. Type TelBook Name As string * 10 TelNum Integer End Type TelBook . Type TelBook Name As string * 10 TelNum Integer End Type,11.7 第7步:程序测试,功能完善,15、执行Open”Tel.dat” For Random As #1 Len=50后,对文件Tel.dat中的数据能够执行的操作是( ) .只能写,不能度 B.只能读,不能写 C. 既可以读,也可以写 . 不能读,不能写 16、目录列表的Path属性的作用是( ) .显示当前驱动器或指定驱动器上的目录结构 B. 显示当前驱动器或指定驱动器上的某目录下的文件名 C. 显示根目录下的文件名 . 显示该路径下的文件名 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论