《第12章 文件、文件系统对象课件.ppt》由会员分享,可在线阅读,更多相关《第12章 文件、文件系统对象课件.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGO第12章文件、文件系统对象(时间:1次课,2学时)v学习目的与要求:学习目的与要求:v本章主要介绍本章主要介绍Visual Basic中有关文件的基中有关文件的基本概念、文件结构、文件类型以及对文件的基本概念、文件结构、文件类型以及对文件的基本操作。本操作。v 在以前的各章中,所用的输入和输出都是以显示器和键盘为对象。在以前的各章中,所用的输入和输出都是以显示器和键盘为对象。即从键盘输入数据,并将计算机的处理结果输出到显示器。这种简即从键盘输入数据,并将计算机的处理结果输出到显示器。这种简单的输入输出只能解决一些比较简单的问题,当需要计算机处理更单的输入输出只能解决一些比较简单的问题,
2、当需要计算机处理更加复杂的问题时,这种输入和输出方法就不能满足用户的要求,就加复杂的问题时,这种输入和输出方法就不能满足用户的要求,就必须用文件进行处理。必须用文件进行处理。v 文件文件(File)是程序设计中的一个重要概念。所谓是程序设计中的一个重要概念。所谓“文件文件”一般指存储一般指存储在计算机外部介质上的数据集合。计算机操作系统是以文件为单位在计算机外部介质上的数据集合。计算机操作系统是以文件为单位对数据进行管理的。而文件在存储介质上的位置是依据驱动器、文对数据进行管理的。而文件在存储介质上的位置是依据驱动器、文件夹、文件名来创建和编辑数据文件,因此对对驱动器、文件夹、件夹、文件名来创
3、建和编辑数据文件,因此对对驱动器、文件夹、文件的管理是编程中经常遇到的问题。这些管理包括:创建、编辑文件的管理是编程中经常遇到的问题。这些管理包括:创建、编辑文件,创建、移动、复制、修改或删除文件夹和文件等内容。文件,创建、移动、复制、修改或删除文件夹和文件等内容。v Visual Basic具有较强的对文件处理的能力,允许使用两种不同具有较强的对文件处理的能力,允许使用两种不同方式来处理驱动器、文件夹和文件:一种是使用传统的文件语句和方式来处理驱动器、文件夹和文件:一种是使用传统的文件语句和函数,如函数,如Open、Write等方法;另外一种是使用等方法;另外一种是使用File System
4、 Object (FSO)对象模型。对象模型。12.1传统的文件I/O语句和函数v1. 数据文件类型数据文件类型v传统文件处理方法是早期传统文件处理方法是早期BASIC的遗产。它通的遗产。它通过使用过使用 Open 语句以及其它一些相关的语句和语句以及其它一些相关的语句和函数来实现对文件的操作。函数来实现对文件的操作。v在在Visual Basic中,为便于对文件的访问,将中,为便于对文件的访问,将文件分成为三种类型,即:顺序型、随机型、文件分成为三种类型,即:顺序型、随机型、二进制型。二进制型。v顺序文件顺序文件v顺序文件构成文件的记录不定长,记录与记录顺序文件构成文件的记录不定长,记录与记
5、录间有明确的分隔符。间有明确的分隔符。v2. 访问顺序文件访问顺序文件v 新建文件或写顺序文件的一般过程新建文件或写顺序文件的一般过程v 在在Visual Basic应用程序中新建文件或写顺序文件应用程序中新建文件或写顺序文件的一般过程:的一般过程:v 用用Open语句打开文件语句打开文件v 用文件读写语句读写文件缓冲区用文件读写语句读写文件缓冲区v 用用Close语句关闭文件。语句关闭文件。v 顺序访问文件时可以执行的操作有:从文件输入字符顺序访问文件时可以执行的操作有:从文件输入字符 (Input)、向文件输出字符、向文件输出字符 (Output)、把字符加到、把字符加到文件文件 (App
6、end)。v 3. 访问随机文件访问随机文件v 随机文件中的一行数据称为一条记录,其长度是固定的,都有记随机文件中的一行数据称为一条记录,其长度是固定的,都有记录号。随机文件对文件的读写顺序没有限制,可以随机写某一条录号。随机文件对文件的读写顺序没有限制,可以随机写某一条记录。记录。v 用用Visual Basic应用程序新建随机或读写随机文件的一般过程:应用程序新建随机或读写随机文件的一般过程:v 用用Type语句定义记录结构;语句定义记录结构;v 用用Open pathname For Random As filenumber Len = reclength 语句打开随机文件语句打开随机文
7、件v 用用Get # 或或 Put # 语句读写文件记录;语句读写文件记录;v 用用close # 关闭文件。关闭文件。v 如果如果所标识的文件在磁盘上不存在,则上述过程先新所标识的文件在磁盘上不存在,则上述过程先新建名为建名为的随机文件,然后即可同时读写新文件内容;的随机文件,然后即可同时读写新文件内容;否则打开名为否则打开名为的随机文件,然后同时读写文件内容。的随机文件,然后同时读写文件内容。v 随机文件的打开随机文件的打开v 语句格式:语句格式:v Open pathname For Random As filenumber Len = reclengthv 说明:说明:v pathna
8、me 所要操作的文件名,包括存储该文件的驱动器、路所要操作的文件名,包括存储该文件的驱动器、路径。径。v Random 默认的访问类型默认的访问类型v filenumber 用来标示打开文件的文件号,必须是介于用来标示打开文件的文件号,必须是介于1-511之间的整数。打开的文件通过之间的整数。打开的文件通过filenumber进行各项操作。进行各项操作。v Len = reclength 指定了每一条记录的长度,默认值是指定了每一条记录的长度,默认值是128个个字节。若字节。若reclength比实际记录的长度长,记录可以写入,但会比实际记录的长度长,记录可以写入,但会浪费空间;若浪费空间;若
9、reclength比实际记录的长度短,则会发生错误。比实际记录的长度短,则会发生错误。可以用可以用Len()函数来返回记录的长度。函数来返回记录的长度。v 随机文件的读、写、删除操作随机文件的读、写、删除操作v Put #语句语句v 语句格式:语句格式:v Put # , , v 说明:说明:v filenumber 用用For Random 模式打开的随机文模式打开的随机文件或件或For Binary模式打开的二进制文件号。模式打开的二进制文件号。v recordnumber 是可选项,表示在文件中输出数据是可选项,表示在文件中输出数据的位置。一般是要读入、写入或替换的记录号。的位置。一般是
10、要读入、写入或替换的记录号。v varname 是接受记录的内容的变量名。是接受记录的内容的变量名。v Get #语句语句v 语句格式:语句格式:v Get # , , v 说明:说明: filenumber 、recordnumber 、varname参数含义同参数含义同Put #语句。语句。v 功能:功能:recordnumber是大于是大于1的整数,表示对第的整数,表示对第几条记录进行操作。如果忽略几条记录进行操作。如果忽略recordnumber,则,则表示读出当前记录后的那一条记录。表示读出当前记录后的那一条记录。v随机文件删除的步骤:随机文件删除的步骤:v 创建一个新文件创建一个新
11、文件v 把有用的所有记录从原文件复制到新文件把有用的所有记录从原文件复制到新文件v 关闭原文件并用关闭原文件并用KILL语句删除它;语句删除它;v 使用使用NAME语句把新文件以原文件的名字语句把新文件以原文件的名字重新命名。重新命名。v 4. 二进制文件二进制文件v 二进制访问模式与随机访问模式类似,读写语句也是二进制访问模式与随机访问模式类似,读写语句也是Get和和Put,区别在于二进制模式的访问是字节,而随,区别在于二进制模式的访问是字节,而随机模式的访问单位是记录。机模式的访问单位是记录。v 在二进制访问模式中,可以把文件指针移到文件的任何在二进制访问模式中,可以把文件指针移到文件的任
12、何地方。文件刚刚被打开时,文件指针指向第一个字节,地方。文件刚刚被打开时,文件指针指向第一个字节,以后将随着文件处理命令的执行而移动。二进制文件与以后将随着文件处理命令的执行而移动。二进制文件与随机文件一样,文件一旦打开,就可以同时进行读写。随机文件一样,文件一旦打开,就可以同时进行读写。12.2文件系统对象v 1. 文件系统对象概念文件系统对象概念v 文件系统对象的英文全称是文件系统对象的英文全称是File System Object(FSO)。FSO对象模型不仅可以像使用传统文件操作语句那样实现文件的创建、对象模型不仅可以像使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以
13、检测是否存在指定的文件夹、文件的改变、移动和删除,而且可以检测是否存在指定的文件夹、文件的信息,如文件、创建日期或最近修改日期等,以及当前系统中使用信息,如文件、创建日期或最近修改日期等,以及当前系统中使用的驱动器的信息,如驱动器的种类是的驱动器的信息,如驱动器的种类是CD-ROM还是可移动磁盘,还是可移动磁盘,当前磁盘的剩余空间还有多少等。当前磁盘的剩余空间还有多少等。v FSO对象模型包含在对象模型包含在Scripting类型库类型库(Scrrun.Dll)中。它同时中。它同时包含包含Drive,Folder,File,FileSystemObject和和TextStream等等5个对象。
14、其中个对象。其中Drive用来收集驱动器的信息,如用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文用于创建、删除或移动文件夹,同时可以进行像系统查询文件夹的路径等操作;件夹,同时可以进行像系统查询文件夹的路径等操作;File的基本的基本操作和操作和Folder基本相同,所不同的是基本相同,所不同的是File的操作主要是针对磁盘的操作主要是针对磁盘上的文件进行的;上的文件进行的;FileSystemObject是是FSO对象模型中最主要对象模型中最主要对象,它提供一套完整的可用于创建、删除文件和文件夹,收集驱对象,它提供一套完整的
15、可用于创建、删除文件和文件夹,收集驱动器、文件夹和文件等相关信息的方法;最后,动器、文件夹和文件等相关信息的方法;最后,TextStream对对象则用来完成对文件的读写操作的。象则用来完成对文件的读写操作的。v 2. FSO对象模型及应用对象模型及应用v FSO对象模型包含在一个称为对象模型包含在一个称为Scripting的类型库中,的类型库中,此类型库位于此类型库位于Scrrun.Dll文件中。如果还没有引用此文件中。如果还没有引用此文件,可以从文件,可以从“属性属性”菜单的菜单的“引用引用”对话框选择对话框选择“Microsoft Scripting Runtime”项。然后就可项。然后就
16、可以使用以使用“对象浏览器对象浏览器”来查看其对象、集合、属性、方来查看其对象、集合、属性、方法、事件以及它的常数。用户能够使用法、事件以及它的常数。用户能够使用FSO对象模型对象模型创建、改变、移动和删除文件夹,或者检测是否存在创建、改变、移动和删除文件夹,或者检测是否存在指定的文件夹,以及该文件夹的信息指定的文件夹,以及该文件夹的信息。v 顺序文本文件和顺序文本文件和FileSystemObject对象对象v 创建创建 FileSystemObject 对象对象v 声明变量为声明变量为FileSystemObject类型,格式如下:类型,格式如下: v Dim fso As New Fil
17、eSystemObject v 或或v 使用使用 CreateObject 方法创建方法创建 FileSystemObject 对象,如下面的代码中所示:对象,如下面的代码中所示: v fso = CreateObject(Scripting.FileSystemObject)v FSO常见方法及命令常见方法及命令v在要读取在要读取 FileSystemObject 对象内文件对象内文件的内容时,顺序文本文件(有时称为的内容时,顺序文本文件(有时称为“文本流文本流”)非常有用。可用下列这些方法访问顺序文本文非常有用。可用下列这些方法访问顺序文本文件件,如表如表12-6所示。所示。v注意注意 v
18、FSO 模型不支持创建或删除驱动器。模型不支持创建或删除驱动器。v用用Create方法创建的对象时,不需要使用方法创建的对象时,不需要使用 Get 方法;用方法;用 CreateFolder 方法创建一个方法创建一个新文件夹,也不需要使用新文件夹,也不需要使用 GetFolder 方法访方法访问其属性。问其属性。v 举例举例vDim fso As New FileSystemObject, fil As FilevSet fil = fso.GetFile(d:vbteststuold.dat)vPrint fil.Name 可以使用可以使用fil对象的对象的Name属性访问文件的名字属性访问
19、文件的名字v程序运行结果是在窗体上打印文件名:程序运行结果是在窗体上打印文件名: stuold.datl File和和TextStream对象对象l 由于有关由于有关File对象的复制,删除,移动等操作和对象的复制,删除,移动等操作和Folder对象类似,所以这部分内容就不再重复。这里对象类似,所以这部分内容就不再重复。这里主要讲述利用主要讲述利用File对象和对象和TextStream对象操作文本对象操作文本文件。文件。l 通常对文本文件的操作包括在文本文件中创建数据,通常对文本文件的操作包括在文本文件中创建数据,在文本文件中添加数据,删除文本文件的数据等操作。在文本文件中添加数据,删除文本
20、文件的数据等操作。这些操作都可以通过这些操作都可以通过File对象和对象和FileSystemObject对象的相关方法完成。不过在对象的相关方法完成。不过在使用之前,首先要创建一个文本文件。使用之前,首先要创建一个文本文件。u 创建一个文本文件的三种方法创建一个文本文件的三种方法u第一种方法:用第一种方法:用 File System Objects 对象的对象的CreateTextFile 方法。方法。u例如:例如:uDim fso As New FileSystemObject, fil As FileuSet fil = fso.CreateTextFile(c:testfile.txt
21、, True)u第二种方法:使用第二种方法:使用File System Objects 对象的带对象的带ForWriteing标志设置得标志设置得OpenTextFile 方法。方法。v 添加数据到文件添加数据到文件v 文本文件一经创建,就可以分三步向其中加入数据:文本文件一经创建,就可以分三步向其中加入数据: v 步骤步骤1:打开文本文件以备写入数据。:打开文本文件以备写入数据。v 步骤步骤2:写入数据。:写入数据。v 步骤步骤3:关闭文件。:关闭文件。 v 要打开文件,可以使用要打开文件,可以使用 File 对象的对象的 OpenAsTextStream 方法,方法,或者或者 FileSy
22、stemObject 对象的对象的 OpenTextFile 方法。方法。v 要向打开的文本文件中写入数据,可以使用要向打开的文本文件中写入数据,可以使用 TextStream 对象的对象的 Write 或或 WriteLine 方法。它们之间的唯一差别是方法。它们之间的唯一差别是 WriteLine 在指定的字符串末尾添加换行符。在指定的字符串末尾添加换行符。v 如果想要向文本文件中添加一个空行,请使用如果想要向文本文件中添加一个空行,请使用 WriteBlankLines 方法。方法。 v 要关闭一个已打开的文件,请使用要关闭一个已打开的文件,请使用 TextStream 对象的对象的 C
23、lose 方法。方法。v 使用使用 File System Objects 读取文件读取文件v 要从一个文本文件中读取数据,可以使用要从一个文本文件中读取数据,可以使用 TextStream 对象的对象的 Read、 ReadLine 或或 ReadAll 方法。方法。 v Read 方法:从一个文件中读取指定数量的字符方法:从一个文件中读取指定数量的字符v ReadLine 方法:读取一整行(不包括换行符)方法:读取一整行(不包括换行符)v ReadAll 方法:读取一个文本文件的所有内容方法:读取一个文本文件的所有内容v 如果使用如果使用 Read 或或 ReadLine 方法并且想要跳过
24、数据方法并且想要跳过数据的某些部分,可以使用的某些部分,可以使用 Skip 或或 SkipLine 方法。方法。12.3常用的文件操作语句和函数 v1. filecopyv格式:格式:filecopy 源文件名源文件名 目标文件名目标文件名v功能:复制一个文件功能:复制一个文件v说明:不能复制一个已打开的文件说明:不能复制一个已打开的文件v2. killv格式:格式:kill 文件名文件名v功能:删除文件功能:删除文件v说明:文件名中可以使用通配符说明:文件名中可以使用通配符 *,?,?12.3常用的文件操作语句和函数 v3. namev格式:格式:name 旧文件名旧文件名 新文件名新文件名
25、v功能:重新命名一个文件或目录功能:重新命名一个文件或目录v说明:不能使用通配符;具有移动文件功能;说明:不能使用通配符;具有移动文件功能;不能对已打开的文件进行重命名操作不能对已打开的文件进行重命名操作v4. chdrivev格式:格式:chdrive 驱动器驱动器v功能:改变当前驱动器功能:改变当前驱动器 v说明:如果驱动器为空,则不变;如果驱动器说明:如果驱动器为空,则不变;如果驱动器中有多个字符,则只会使用首字母中有多个字符,则只会使用首字母12.3常用的文件操作语句和函数 v5. mkdirv格式:格式:mkdir 文件夹名文件夹名v功能:创建一个新的目录功能:创建一个新的目录v6.
26、 chdirv格式:格式:chdir 文件夹名文件夹名v功能:改变当前目录功能:改变当前目录v说明:改变默认目录,但不改变默认驱动器。说明:改变默认目录,但不改变默认驱动器。12.3常用的文件操作语句和函数 v7. rmdirv格式:格式:rmdir 文件夹名文件夹名v功能:删除一个存在的目录功能:删除一个存在的目录v说明:不能删除一个含有文件的目录说明:不能删除一个含有文件的目录v8. curdir()函数函数v格式:格式:curdir(驱动器)(驱动器)v功能:可以确定任何一个驱动器的当前目录。功能:可以确定任何一个驱动器的当前目录。v说明:括号中的驱动器表示需要确定当前目录说明:括号中的驱动器表示需要确定当前目录的驱动器,如果为空,返回当前驱动器的当前的驱动器,如果为空,返回当前驱动器的当前目录路径。目录路径。