首页计算机计算机软件VB程序设计 12 第12章 文件.pptx

12 第12章 文件.pptx

页数:73页文件大小:460.1 KB来源: VB程序设计ppt课件

本课件讲解VB文件处理,先介绍文件的基本概念与分类,再归纳目录与文件操作语句和函数,说明驱动器、目录与文件三个文件系统控件的配合使用,随后分别讲解顺序文件、随机文件与二进制文件的打开、读写与关闭方法,并配有完整例题。

第12章 文件章节封面,标示本章主题与所讲授的主要内容
12.1 文件的基本概念讲解页,说明文件的打开、读写与关闭方式
12.2 常用的文件操作语句和函说明页,说明CurDir、ChDir、ChDrive等函数的参数与返回值
查看本课件的文字版(共 73 页,供检索与复制)

第1页:第12章 文件

第12章 文件

第12章文件本章要点:文件的基本概念常用的文件操作语句和函数文件系统控件顺序文件随机文件二进制文件

第2页:12.1 文件的基本概念

12.1 文件的基本概念

12.1文件的基本概念文件:指存储在外部介质上的数据的集合。分类:按存储介质分—磁盘文件、磁带文件、打印文件按文件内容分—程序文件、数据文件按访问方式分—顺序文件、随机文件、二进制文件顺序文件:普通的纯文本文件。

查找数据必须按记录顺序进行。不能同时进行读写操作。随机文件:以固定长度的记录为单位进行存储。可以按任意顺序访问其中的数据。

可以同时进行读写操作。不能用字处理软件查看。二进制文件:以字节为单位进行访问。不能用字处理软件查看。

第3页:12.2 常用的文件操作语句和函数

12.2 常用的文件操作语句和函数

  • 与文件、文件夹有关的函数和语句CurDir函数、ChDir语句、ChDrive语句、MkDir语句、RmDir语句、Dir函数等
  • 对文件和文件夹的操纵FileCopy语句、Kill语句、Name语句、FileDateTime函数、FileLen函数、GetAttr函数、SetAttr函数等

第4页:与文件、文件夹有关的函数和语句

与文件、文件夹有关的函数和语句

12.2.1与文件、文件夹有关的函数和语句1.CurDir函数格式:CurDir [<驱动器>]功能:返回一个字符串,表示某驱动器的当前路径。

<驱动器>:字符串表达式,指定一个存在的驱动器。省略该参数时表示当前驱动器。例如,设C为当前的驱动器,当前路径为“C:\WINDOWS”,使用下列语句返回当前路径。

Dim MyPath as stringMyPath = CurDir'返回“C:\WINDOWS”MyPath = CurDir("C")'返回“C:\WINDOWS”

第5页:2.ChDir语句

2.ChDir语句

格式:ChDir <路径名>功能:改变当前的目录。<路径名>:一个字符串表达式,表示将成为新的缺省目录的名称。

例如,将当前目录改为“MyDir”:ChDir "MyDir"例如,假设当前的驱动器是“C:”,把缺省目录改至“D:\MyDir”,而“C:”仍旧是当前驱动器:ChDir "D:\MyDir"

第6页:3.ChDrive语句

3.ChDrive语句

格式:ChDrive <驱动器>功能:改变当前的驱动器。<驱动器>:一个字符串表达式,指定一个存在的驱动器。

例如,使用ChDrive语句将当前的驱动器改为“D”:ChDrive "D"

第7页:4.MkDir语句

4.MkDir语句

格式:MkDir <路径名>功能:创建一个新的目录。<路径名>:一个字符串表达式,表示要创建的目录的名称。

<路径名>可以包含驱动器。例如,在D驱动器下建立新的目录MyDirMkDir "D:\MyDir"

第8页:5.RmDir语句

5.RmDir语句

格式:RmDir <路径名>功能:删除一个存在的目录。<路径名>:一个字符串表达式,指定要删除的目录。

如果想要使用RmDir来删除一个含有文件的文件夹或目录,则会发生错误。在试图删除文件夹之前,必须先使用Kill语句来删除此目录下的所有文件。

例如:删除C驱动器下的目录MyDirRmDir "C:\MyDir"

第9页:6.Dir函数

6.Dir函数

格式:Dir [(<路径名> [,<属性>])]功能:返回一个String类型的字符串,用来表示一个文件或目录名称。

<路径名>:一个字符串表达式,是可选参数,用来指定文件或目录的名称。<属性>:用来指定文件、目录或文件夹的属性。

0 (或vbNormal):(缺省)指定没有属性的文件。1 (或vbReadOnly):指定无属性的只读文件.2 (或vbHidden) :指定无属性的隐藏文件4 (或VbSystem):指定无属性的系统文件8 (或vbVolume) :指定卷标文件;如果指定了其它属性,则忽略vbVolume16 (vbDirectory):指定无属性文件及其路径和文件夹。

第10页:Dir函数应用示例

Dir函数应用示例

  • ①MyFile = Dir("C:\Windows\Win.ini")表示查找"C:\Windows\Win.ini"是否存在,如果该文件存在,返回“Win.ini”。
  • ②MyFile = Dir("C:\Windows\*.ini")表示查找"C:\Windows\下所有后缀是“.ini”的文件是否存在。如果有多个“.ini”文件存在,Dir函数将返回满足条件的第一个匹配的文件名。若再次调用Dir函数,但不带任何参数:MyFile = Dir则返回同一目录下的下一个“.ini”文件。

第11页:Dir函数应用示例(续)

Dir函数应用示例(续)

③MyFile = Dir(“test.txt”, vbHidden+vbReadOnly)表示返回属性为隐藏的只读文件test.txt的名称④MyPath = "c:\winnt"Print Dir(MyPath,vbDirectory)表示如果文件夹winnt存在,则显示其名称。

第12页:1. FileCopy语句

1. FileCopy语句

1.FileCopy语句格式:FileCopy <源文件名>, <目标文件名>功能:复制文件。<源文件名>:一个字符串表达式,用来表示要被复制的源文件名。

<源文件名>可以包含目录及驱动器。<目标文件名>:一个字符串表达式,用来指定要复制的目标文件名。

<目标文件名>可以包含目录及驱动器。12.2.2对文件和文件夹的操纵

第13页:FileCopy语句示例

FileCopy语句示例

例如,将源文件srcfile.txt复制到D盘且目标文件名为destfile.txtDim sFile, dFilesFile = "srcfile.txt"'指定源文件名dFile = "d:\destfile.txt"'指定目标文件名FileCopy sFile, dFile

第14页:2.Kill语句

2.Kill语句

格式:Kill <路径名>功能:删除指定的文件。<路径名>:一个字符串表达式,用来指定被删除的文件。

<路径名>可以包含目录及驱动器。Kill支持多字符(*)和单字符(?)的通配符来指定多个文件,使用时一定要慎重!

例如,删除testfile.txt文件Kill "TestFile.txt"将当前文件夹下所有*.txt文件删除。Kill "*.txt"

第15页:3.Name语句

3.Name语句

格式:Name <原路径名>As <新路径名>功能:重新命名文件、目录或文件夹的名称。<原路径名>:一个字符串表达式,表示已存在的文件名、目录或文件夹,可以包含目录及驱动器。

<新路径名>:一个字符串表达式,表示新的文件名、目录或文件夹,可以包含目录及驱动器。

第16页:Name语句的使用注意

Name语句的使用注意

  • Name语句能重新命名文件并可将其移动到一个不同的目录或文件夹中。Name也可在不同的驱动器间移动文件。
  • 在一个已打开的文件上使用Name语句,将会产生错误。在改变名称之前,必须先关闭打开的文件。
  • Name语句参数不能包括多字符(*)和单字符(?)的统配符。

第17页:Name语句应用示例

Name语句应用示例

  • 将oldfile.txt更名为newfile.txtName "oldfile.txt" As "newfile.txt"
  • 将C:\MyDir\OldFile更名为C:\NewDir\NewFileOldName = "C:\MyDir\OldFile“NewName = "NewDir\NewFile“'更改文件名,并移动文件。Name OldName As NewName

第18页:4.FileDateTime函数

4.FileDateTime函数

格式:FileDateTime(<路径名>)功能:返回一个Variant(Date)类型数据,表示文件或目录被创建或最后被修改的日期和时间。

<路径名>:一个字符串表达式,指定文件名、目录或文件夹。可以包含目录以及驱动器。例如,获得文件C:\test.txt最后被修改时间,日期与时间的显示格式依系统的地区设置而定。

Print FileDateTime("TestFile")返回“1/12/2005 5:35:27PM”,表示最后被修改时间为2005年1月12日下午5时35分27秒。

第19页:5.FileLen函数

5.FileLen函数

格式:FileLen(<路径名>)功能:返回文件的长度,以字节为单位表示,是一个Long类型数据。<路径名>:一个字符串表达式,用来指定文件名。

当调用FileLen函数时,如果所指定文件已经打开,则返回的值是这个文件在打开前的大小。若要取得一个打开文件的长度大小,应使用LOF函数。

例如,使用FileLen来获得文件C:\testfile.txt长度。Dim MySizeMySize = FileLen("c:\testfile.txt")

第20页:6.GetAttr函数

6.GetAttr函数

  • 文件、目录或文件夹的属性值见P261表12-2
  • 若要判断文件是否具有某个属性,需要将GetAttr函数的返回值与表12-2所列的属性值按位进行And运算,如果所得的结果不为零,则表示设置了这个属性值。

第21页:GetAttr函数应用示例

GetAttr函数应用示例

  • ①在下面的And表达式中,如果文件C:\testfile.txt的档案属性(Archive)没有设置,则返回值为零;如果文件的档案属性已设置,则返回非零的数值。Result = GetAttr("c:\testfile.txt") And vbArchive
  • ②如果c:\apple.txt具有隐含属性,则下列语句返回2Print GetAttr("c:\apple.txt")

第22页:GetAttr函数应用示例(续)

GetAttr函数应用示例(续)

③如果c:\apple.txt具有隐含和只读属性,则下列语句返回非零值。Print MyAttr And (vbHidden + vbReadOnly)④如果MyDir为一文件夹,则下列语句返回16Print GetAttr("MyDir")

第23页:7.SetAttr语句

7.SetAttr语句

格式:SetAttr <路径名>,<属性>功能:设置文件属性<路径名>:一个字符串表达式,用来指定文件名。

<属性>:一个常数或数值表达式,表示文件的属性。<属性>参数值见P261表12-2。例如:设置文件c:\testfile.txt具有隐含和只读属性SetAttr "c:\testfile.txt",vbHidden+vbReadOnly

第24页:【例12-1】文件属性查询程序

【例12-1】文件属性查询程序

【例12-1】使用本节介绍的函数和语句实现下图所示的对话框。运行程序后,首先弹出一个“打开”对话框,在对话框中选中一文件,按“确定”按钮,即可显示下图b。

a)设计界面b)运行界面CommonDialog1

第25页:【例12-1】的代码实现

【例12-1】的代码实现

程序代码:

Private Sub Form_Load() Dim filename As String CommonDialog1. ShowOpen'打开通用对话框filename= CommonDialog1.filename'获得文件名 Text1.Text=filename'显示文件名'获得选中文件所在的驱动器 Label3.Caption=Left(CurDir(filename), 3)Label5.Caption=FileLen(filename)'获得文件长度'获得文件创建时间Label7.Caption = FileDateTime(filename)'判断文件是否具有只读属性 Check1.Value = GetAttr(filename) And vbReadOnly'判断文件是否为隐藏文件Check2.Value = GetAttr(filename) And vbHidden End Sub

第26页:12.3 文件系统控件

12.3 文件系统控件

  • 驱动器列表框(DriveListBox)
  • 目录列表框(DirListBox)
  • 文件列表框(FileListBox)它们都能自动从操作系统获取信息,让用户了解有关驱动器、目录和文件的当前状态。这三个控件可以单独使用,也可以组合起来使用。组合使用时,可在各控件的事件过程中编写代码,建立它们之间的联系,产生联动的关系。12.3文件系统控件

第27页:驱动器列表框DriveListBox

驱动器列表框DriveListBox

显示系统中所有有效磁盘驱动器1.属性Drive:返回或设置驱动器名称只能在运行时设置。取值—A: C: D: E:等例:Drive1.Drive="c:"注意:改变Drive属性并不能自动变更当前驱动器,要改变当前驱动器需使用ChDrive语句。

例:ChDrive "D:"例:ChDrive Drive1.Drive12.3.1驱动器列表框(DriveListBox)

第28页:驱动器列表框的Change事件

驱动器列表框的Change事件

2.事件Change:当选择一个新驱动器或通过代码改变Drive属性时发生。例:将选择的驱动器设置为当前驱动器:

Private Sub Drive1_Change()ChDrive Drive1.Drive End Sub

第29页:目录列表框DirListBox

目录列表框DirListBox

显示一个树型的目录结构1.属性Path:设置或返回当前工作目录的完整路径(包括驱动器盘符)例:Dir1.Path = "c:\winnt"注意:在目录列表框中选择目录不能改变当前目录,要真正改变当前目录需使用ChDir语句。

例:ChDir "c:\system"例:ChDir Dir1.Path12.3.2目录列表框(DirListBox)

第30页:目录列表框的Change事件

目录列表框的Change事件

2.事件Change:当双击一个目录项或通过代码改变Path属性时发生。例:将选择的路径设置为当前路径

Private Sub Dir1_Change()ChDir Dir1.Path End Sub

第31页:文件列表框FileListBox

文件列表框FileListBox

  • (1) Path:设置或返回当前工作目录的完整路径。
  • (2)FileName:设置或返回所选文件的路径和文件名。设置时:文件名可以带路径返回时:文件名不含路径名
  • (3)Pattern:设置对显示文件的过滤。例:Filelistbox1.Pattern= "*.EXE ; *.COM "只显示以.EXE和.COM为后缀的文件2.事件Click和DblClick事件12.3.3文件列表框(FileListBox)

第32页:【例12-2】三个文件系统控件联动

【例12-2】三个文件系统控件联动

【例12-2】在窗体上建立DriveListBox控件、DirListBox控件和FileListBox控件,通过三个控件的关联实现各控件间的联动。

第33页:【例12-2】的代码实现

【例12-2】的代码实现

程序代码如下:

Private Sub Form_Load() Text1.Text = "" Drive1.Drive = "c:\"'初始化驱动器列表框Rem设置文件属性--如显示只读文件(实验时去掉注释)' File1.ReadOnly = True' File1.Archive = False' File1.System = False' File1.Normal = False' File1.Hidden = FalseRem设置文件过滤条件(实验时可去掉注释)' File1.Pattern = "*.txt;*.exe" End Sub

第34页:【例12-2】的代码实现(代码)

【例12-2】的代码实现(代码)

Private Sub Drive1_Change()'使驱动器列表框和目录列表框同步 Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change()'使目录列表框和文件列表框同步 File1.Path = Dir1.Path End Sub Private Sub File1_Click()'在文本框中显示文件名 Text1.Text = File1.FileName End Sub

第35页:12.4 顺序文件

12.4 顺序文件

12.4顺序文件顺序文件:ASCII文件由任何字处理软件建立、在VB中建立只能按顺序存取记录例:文件AA.DAT内容如下:"zhang san","85","90""li si","70","66""wang wu","90","89"记录:行域:字段,数据项顺序文件操作:打开文件、读或写文件、关闭文件

第36页:顺序文件的打开

顺序文件的打开

1.顺序文件的打开格式:Open<文件名>FOR<方式>AS[#]<文件号>功能:按指定的方式打开文件,并指定一文件号。

<方式>:Input—以只读方式打开。当文件不存在时出错。Output—以写方式打开。如果文件不存在,则创建一个新文件。

如果文件已经存在,则删除原数据。Append—以添加方式打开文件。如果文件不存在,就创建一个新的文件。如果文件已经存在,写数据时从文件尾添加。

<文件号>:1到511之间的整数。12.4.1顺序文件的打开和关闭

第37页:顺序文件打开示例

顺序文件打开示例

  • (1)在C盘Data文件夹下建立一个名为stud.dat的文件Open "C:\Data\Stud.dat" ForOutputAs #1
  • (2)打开当前盘当前文件夹下的Salary.dat文件,以便从中读取数据Open "Salary.dat" ForInputAs #8
  • (3)打开C盘Data文件夹下名为Stud.dat的文件,以便在文件末尾添加数据Open "C:\Data\Stud.dat" ForAppendAs 2

第38页:顺序文件的关闭

顺序文件的关闭

  • (1)关闭文件号为1的文件Close #1
  • (2)关闭文件号为1、2、8的文件Close #1, 2, #8'文件号前的“#”号可以省略
  • (3)关闭所有打开的文件Close

第39页:顺序文件的写操作

顺序文件的写操作

1.写操作(1)Write #语句格式:Write #<文件号>,[<输出列表>]功能:将<输出列表>的内容写入指定的文件中。

例:Write #1, A1, A2, A3说明:<输出列表>中各项之间要用逗号分开<输出列表>每一项可以是常量、变量或表达式写到文件中的各数据间自动插入逗号,字符串自动加上双引号所有数据写完后,在最后加入一个回车换行符不含<输出列表>时,将在文件中写入一空行12.4.2顺序文件的读写

第40页:【例12-3】建立学生成绩文件

【例12-3】建立学生成绩文件

【例12-3】建立一个新的学生成绩文件,将输入的学生成绩添加到文件中。界面如下图。CommonDialog1Text1Text2Text3Text4Command1Command2添加:工程部件选择“Microsoft Common Dialog Controls 6.0”

第41页:【例12-3】的代码实现

【例12-3】的代码实现

Private Sub Form_Load() CommonDialog1. ShowSave Open CommonDialog1.FileName For Output As #2 End Sub Private Sub Command1_Click()'添加no = Text1.Text : na = Text2.Textg1 = Val(Text3.Text) : g2 = Val(Text4.Text) Write #2, no, na, g1, g2 Text1.Text = "" : Text2.Text = ""Text3.Text = "" : Text4.Text = "" End Sub Private Sub Command2_Click()'退出 Close #2End End Sub与Append的区别?

第42页:(2) Print #语句

(2) Print #语句

格式:

Print #<文件号>,<输出列表>功能:将<输出列表>的内容写入指定的文件中。说明:•当<输出列表>用逗号分隔时,采用分区格式输出•当<输出列表>用分号分隔时,采用紧凑格式输出•所有项将在一行内输出,输出后将自动换行•可以使用Spc()函数和Tab()函数将例12-3中的 Write #语句改用 Print #语句: Print #2, no, na, g1, g2

第43页:Print #语句生成的数据格式

Print #语句生成的数据格式

用:Print #2, no; na; g1; g2生成的数据:001张三87 92002李四76 89003王五93 86用:Write #2, no, na, g1, g2生成的数据:"001","张三",87,92"002","李四",76,89"003","王五",93,86用:Print #2, no, na, g1, g2生成的数据:001张三87 92002李四76 89003王五93 86

第44页:顺序文件的读操作

顺序文件的读操作

2.读操作(1)

Input #语句格式: Input #<文件号>,<变量列表>功能:从文件中读取数据,按顺序给变量列表中的变量赋值。说明:常用于读取用Write语句生成的文件数据。按顺序读,每读完一条记录,记录指针向后移动一条记录。(2) Line Input #语句格式: Line Input #<文件号>,<变量名>功能:从文件中读取一行数据,作为字符串存放在<变量名>中。(3) EOF函数:EOF(<文件号>)。当到达文件结尾时,EOF函数为True。否则为False。

第45页:【例12-4】读入上例生成的文件

【例12-4】读入上例生成的文件

,并计算每个学生的平均成绩,界面如下,其中,通用对话框控件用于打开一个“打开文件”对话框,在对话框中所选择的文件将作为要显示的文件。

CommonDialog1Command1Text1

第46页:【例12-4】读入上例生成的文件(代码)

【例12-4】读入上例生成的文件(代码)

Private Sub Command1_Click() CommonDialog1. ShowOpen Open CommonDialog1.FileName ForInputAs #3 Text1.Text = "" Do While NotEOF(3)'装入用 Write #语句生成的文件 Input #3, num, nam, s1, s2ave = (s1 + s2) / 2 Text1.Text = Text1.Text & num & " " & nam _& " " & Str(s1) & " " & Str(s2) & _" " & Str(ave) & Chr(13) & Chr(10) Loop Close #3 End Sub

第47页:12.5 随机文件

12.5 随机文件

12.5随机文件随机文件特点:读写次序任意、记录长度相等随机文件中的记录常定义为用户自定义类型。1.用户自定义类型[Private|Public] Type<自定义类型名><元素名>[(下标)]As<类型>[<元素名>[(下标)]As<类型>]…

End Type说明:(1)<自定义类型名>、<元素名>遵循变量的命名规则。(2)<类型>可以是VB系统提供的基本数据类型或已声明的自定义类型。

第48页:用户自定义类型的说明

用户自定义类型的说明

(3)缺省[Private|Public]选项时,默认为Public。必须在窗体模块或标准模块的“通用”位置的声明段进行声明。

在窗体模块中定义时必须使用Private关键字。(4)如果自定义类型的一个元素为数组,则其下标的下界不受

Option Base语句的限制。(5)在使用自定义类型前,必须先声明自定义类型的变量。(6)引用自定义类型元素,使用如下格式:<自定义类型变量名>.<元素名>

第49页:定义Students类型示例

定义Students类型示例

例:定义如下的Students类型用来存放学生的信息,并声明一个Students类型的变量。在窗体的Load事件过程中,实现对变量的每个元素赋值。

单击窗体输出自定义类型变量各元素的值。代码如下:

Private TypeStudentsDept As String * 20'系ClassNo As String * 10'班级Name As String'姓名Age As Integer'年龄 End Type Dim Stud AsStudents'声明一个自定义类型变量

第50页:定义Students类型示例(代码2)

定义Students类型示例(代码2)

Private Sub Form_Load()'给变量的每个元素赋值Stud.Dept = "计算机系"Stud.ClassNo = "软件2001-1"Stud.Name = "张三"Stud.Age = 18 End Sub Private Sub Form_Click() Print Stud.Dept'输出每个元素的值 Print Stud.ClassNo, Stud.Name, Stud.Age End Sub

第51页:随机文件的打开

随机文件的打开

  • (1)For Random表示打开随机文件,可以省略。
  • (2)<记录长度>:通常就是自定义类型的大小,可用Len函数获得。
  • (3)若文件不存在,则建立一个新的文件。2.随机文件的关闭Close语句12.5.1随机文件的打开和关闭

第52页:随机文件的写操作

随机文件的写操作

  • (1)<记录号>:若文件中已有此记录,则该记录将被新数据覆盖;若文件中无此记录,则在文件中添加一条新记录。如果省略<记录号>,则写入数据的记录号为上次读或写的记录的记录号加1。
  • (2)<变量名>:通常是一个自定义类型的变量,也可以是其他类型的变量。12.5.2随机文件的读写

第53页:随机文件的读操作

随机文件的读操作

2.读文件格式:Get [#]<文件号>,[<记录号>],<变量名>功能:将一个随机文件的指定记录读入变量中。

【例12-6】建立学生成绩随机文件。界面如下图。CommonDialog1Text1Text2Text3Text4

第54页:随机文件记录类型定义

随机文件记录类型定义

Private Type StudRecNo As String * 6Name As String * 8Math As IntegerEnglish As Integer End Type Dim StudTab As StudRec Private Sub Form_Load() CommonDialog1. ShowSave Open CommonDialog1.FileName For Random _As #1 Len =Len(StudTab) End Sub

第55页:随机文件记录类型定义(代码3)

随机文件记录类型定义(代码3)

Private Sub Command1_Click() StudTab.No = Text1.Text StudTab.Name = Text2.Text StudTab.Math = Val(Text3.Text) StudTab.English = Val(Text4.Text) Put #1, , StudTab Text1.Text = "" Text2.Text = ""Text3.Text = ""Text4.Text = "" End Sub Private Sub Command2_Click() Close #1End End Sub

第56页:【例12-7】按记录号读取记录

【例12-7】按记录号读取记录

【例12-7】使用例12-6建立的随机文件,按指定的记录号读取记录。Text1Text2Text3Text4Text5

第57页:【例12-7】的代码实现

【例12-7】的代码实现

Private Type StudRecNo As String * 6Name As String * 8Math As IntegerEnglish As Integer End Type Dim StudTab As StudRec Private Sub Form_Load() CommonDialog1. ShowOpen Open CommonDialog1.FileName For Random _As #1 Len = Len(StudTab) End Sub

第58页:【例12-7】读记录代码

【例12-7】读记录代码

Private Sub Text1_KeyUp(KeyCode As Integer, _Shift As Integer)recno = Val( Text1.Text) If KeyCode = 13 Then'用LOF函数返回Open语句打开的文件的大小 If recno > LOF(1) / Len(StudTab) Or _recno <= 0 Then MsgBox "记录号超出范围" Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len( Text1.Text) Exit Sub End If

第59页:按记录号读取并显示记录

按记录号读取并显示记录

Get #1, recno, StudTabText2.Text = StudTab.NoText3.Text = StudTab.NameText4.Text = StudTab.MathText5.Text = StudTab.English

End If End Sub

第60页:12.6 二进制文件

12.6 二进制文件

  • 没有特别的结构
  • 整个文件都可以当作一个长的字节序列来处理
  • 可存放非记录形式的数据或变长记录形式的数据

第61页:二进制文件的打开和关闭

二进制文件的打开和关闭

12.6.1二进制文件的打开和关闭1.二进制文件的打开格式:

Open <文件名> For Binary As [#]<文件号>说明:(1) <文件名>为一字符串表达式。(2)关键字 For Binary表示打开随机文件,不能省略。(3)当使用带参数Binary的Open语句打开二进制文件时,如果文件已经存在则直接打开,否则,建立一个新的文件。例如,以二进制方式打开C盘上的文件test.txt: Open “C:\test.txt” For Binary As #1

第62页:二进制文件的关闭

二进制文件的关闭

2.二进制文件的关闭二进制文件的关闭同样使用Close语句。例如:Close #1'表示关闭文件号为1的文件

第63页:二进制文件的读写

二进制文件的读写

12.6.2二进制文件的读写1.写文件格式:Put [#]<文件号>,[<字节数>],<变量名>功能:将变量包含的数据写入二进制文件中。

说明:(1) <字节数>:表示从文件头开始的字节数,文件中的第一个字节位于位置1,第二个字节位于位置2,依此类推,文件从此位置开始写入数据;如果省略<字节数>,则数据从上次读或写的位置数加1字节处开始写入。

第64页:Put语句的变量说明

Put语句的变量说明

(2)<变量名>:可以是任何类型的变量。每次写入的数据长度为此数据类型所占的字节数。如果是可变长度字符串,写入的将是字符串数据,而不包括结束符,建议最好使用定长字符串读写二进制文件。

(3)可以使用Seek语句来定位读写文件的位置。Seek [#]<文件号>, <字节数>表示将文件的读写位置(指针)定位到<字节数>所指的位置处。

例如,在文件的第10个字节处写入“实验”,使用下列语句:Seek #1, 10Put #1, , "实验"

第65页:二进制文件的读操作

二进制文件的读操作

2.读文件Visual Basic使用Get语句从二进制文件中读取数据。格式:Get [#]<文件号>,[<字节数>],<变量名>功能:将一个已打开的二进制文件读入一个变量之中。

说明:<字节数>的含义与Put语句相同。<变量名>通常可以是任何数据类型,用于接收从二进制文件中读取的数据。

第66页:【例12-8】画点并写入文件

【例12-8】画点并写入文件

【例12-8】设计如下图所示的界面,不断点击“画点”按钮,画出随机生成的彩色点,同时将各点的位置和颜色值写入指定文件“C:\test.img”中,按“清屏幕”按钮清屏幕,再按“重载”按钮,屏幕将重现刚才画过的彩色点。

Command1Command2Command4Command3Command5

第67页:【例12-8】的操作步骤说明

【例12-8】的操作步骤说明

由于本例未考虑容错问题,需要按下列步骤操作:打开文件-画点-清屏幕;打开文件-重载-关闭文件。程序代码如下:Dim c As Long'画点计数

Private Sub Command1_Click()'打开文件 Open "c:\test.img" For Binary As #1 End Sub Private Sub Command2_Click()'关闭文件 Close #1 End Sub Private Sub Command4_Click()'清屏幕 Cls Close #1 End Sub

第68页:【例12-8】读文件并画点

【例12-8】读文件并画点

Private Sub Command3_Click()'读文件并画点 Dim s As LongScaleWidth = 100'设置比例ScaleHeight = 100DrawWidth = 20 For i = 1 To c Get #1, , m_x'读文件 Get #1, , m_y Get #1, , m_red Get #1, , m_green Get #1, , m_blue'画点 P Set (m_x, m_y), RGB(m_red, m_green, m_blue) Next End Sub

第69页:【例12-8】画点并写文件

【例12-8】画点并写文件

Private Sub Command5_Click()'画点并写文件c = c + 1'画点计数ScaleWidth = 100'设置比例ScaleHeight = 100DrawWidth = 20'设置点的大小m_x = Rnd * 100'设置随机点坐标(m_x,m_y)m_y = Rnd * 100m_red = Rnd * 255'设置随机颜色m_green = Rnd * 255m_blue = Rnd * 255'画点 P Set (m_x, m_y), RGB(m_red, m_green, m_blue) Put #1, , m_x'写入文件 Put #1, , m_y Put #1, , m_red Put #1, , m_green Put #1, , m_blue End Sub

第70页:本章小结

本章小结

  • 与文件、文件夹有关的函数和语句CurDir函数、ChDir语句、ChDrive语句、MkDir语句、RmDir语句、Dir函数
  • 对文件和文件夹的操纵FileCopy语句、Kill语句、Name语句、FileDateTime函数、FileLen函数、GetAttr函数、SetAttr函数

第71页:第12章 小结(续)

第12章 小结(续)

  • 驱动器列表框(DriveListBox)
  • Drive属性
  • Change事件
  • 目录列表框(DirListBox)
  • Path属性
  • Change事件
  • 文件列表框(FileListBox)
  • Path属性
  • FileName属性
  • Pattern属性
  • Click、DblClick事件

第72页:第12章 小结(续2)

第12章 小结(续2)

4.顺序文件ASCII文件;只能按顺序存取记录打开:Open语句关闭:Close语句写:

Write #、Print#语句读: Input #、 Line Input #语句,Input、InputB函数5.随机文件读写次序任意、记录长度相等通常用自定义类型变量存取数据打开:Open语句关闭:Close语句写:Put语句读:Get语句

第73页:第12章 小结(续3)

第12章 小结(续3)

6.二进制文件打开:Open语句关闭:Close语句写文件:Put语句读文件:Get语句

顶部目录