第 12 章 处理文件

67
大大大大大大大大大 TaiYuan University of Technology 第 12 第 第第第第 Visual Basic 第第第第第第

description

第 12 章 处理文件. Visual Basic 程序设计教程. 本章介绍: · 使用文件系统控件 · 使用有关的语句和函数 · 操作顺序文件 · 操作随机文件 · 使用文件系统对象. 12.1 概述. · 为什么要引入了数据文件 · 文件标识符 · 文件分类:程序文件和数据文件 · 数据文件按存储方法的不同,可分为以下三种类型: 1 .顺序文件 2 .随机文件 3 .二进制文件 · 数据文件的操作形式. 12.2 操作顺序文件数据的例子. - PowerPoint PPT Presentation

Transcript of 第 12 章 处理文件

Page 1: 第 12 章  处理文件

大学计算机基础教程 TaiYuan University of Technology

第 12 章 处理文件

Visual Basic 程序设计教程

Page 2: 第 12 章  处理文件

Visual Basic 程序设计教程2

本章介绍:· 使用文件系统控件· 使用有关的语句和函数· 操作顺序文件· 操作随机文件· 使用文件系统对象

Page 3: 第 12 章  处理文件

Visual Basic 程序设计教程3

· 为什么要引入了数据文件 · 文件标识符· 文件分类:程序文件和数据文件 · 数据文件按存储方法的不同,可分为以下三种

类型:1 .顺序文件2 .随机文件3 .二进制文件

· 数据文件的操作形式

Page 4: 第 12 章  处理文件

Visual Basic 程序设计教程4

【例 12-1 】设计一个如图 12.1 所示的界面,该窗体上有 1 个驱动器列表框、 1 个文件夹列表框、1 个文件列表框和一个文本框。当启动窗体后,用户在驱动器列表框选择驱动器后,文件夹列表框显示选中驱动器下的文件夹,用

户双击相应的文件夹,在文件列 表框中显示该文件夹下的所有文 本文件( .txt ),用户双击相应的文件就可以在

文本框中显示该文件内容。

Page 5: 第 12 章  处理文件

Visual Basic 程序设计教程5

·VB 提供了三种文件系统控件,它们是:驱动 器列表框( DriveListBox )、文件夹列表框

( DirListBox )和文件列表框 (FileListBox) 。

Page 6: 第 12 章  处理文件

Visual Basic 程序设计教程6

12.3.1 驱动器列表框

·驱动器列表框是下拉式列表框,用来显示当

前系统中所有有效的驱动器(包括远程连接的驱动器)。通过这个下拉列表框用户可以选择驱动器。

·1.属性

2.常用事件:Change事件。

Page 7: 第 12 章  处理文件

Visual Basic 程序设计教程7

属性 说明

Drive 用来设置当前驱动器或返回所选择的驱动器名:对象名 .Drive[= 驱动器名 ]

List 该属性的类型为字符串数组,其中每一个列表项的内容是各有效驱动器符和它们的卷标

ListCount 表示系统中驱动器的个数

2 .常用事件 :Change 事件。

Page 8: 第 12 章  处理文件

Visual Basic 程序设计教程8

12.3.2 文件夹列表框· 文件夹列表框以树形展开方式显示某个驱动器或

文件夹内的各个子文件夹名,并用打开的文件夹图标来表示选定的文件夹,称当前目录。

· 属性Path: 用来设置当前文件夹名或返回所选择的文件夹名 .List: 该属性的类型为字符串数组,它的每一个列表项的

内容是选定磁盘或文件夹下的各子文件夹名

Page 9: 第 12 章  处理文件

Visual Basic 程序设计教程9

ListCount: 表示当前文件夹下的子文件夹个数。ListIndex: 它取值的有效范围为 -n ~ ListCount-1 。

其中, -1 是当前选定文件 夹在 List 属性列表中的序 号,从 0 ~ ListCount-1 则 为它的子文件夹在 List 属 性 ( 数组 ) 中的序号 ( 下标 ) ,而当前文件夹的父文件

夹是绝对值大于 1 的负数,如图 12.3 所示。

Page 10: 第 12 章  处理文件

Visual Basic 程序设计教程10

· 常用事件Chang 事件。当鼠标双击新文件夹或改变 Path 属性时,

触发 Change 事件, Change 事件发生后,改变了文件夹列表框的 Path 属性,即改变了当前文件夹。

Click 事件。当鼠标单击文件夹时,触发 Click 事件, Click 不会改变文件夹列表框中的当前文件夹,但它会改变文件夹列表框的 ListIndex 属性,因此要在 Click事件中改变当前文件夹,可用以下代码实现。

Private Sub Dir1_click() Dir1.Path = Dir1.List(Dir1.ListIndex)End Sub

Page 11: 第 12 章  处理文件

Visual Basic 程序设计教程11

·Keypress 事件。按 Windows 系统的惯例,在程序中可用两种方法改变选定的路径,即用鼠标双击列表框内的某个文件夹名,或先用光标键把列表框内的光标条移到指定文件夹上,然后按回车。后一种方法的实现,必须由控件的 KeyPress 事件来完成。例如:

Private Sub Dir1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex) End IfEnd Sub

Page 12: 第 12 章  处理文件

Visual Basic 程序设计教程12

12.3.3 文件列表框· 文件列表框用于显示当前文件夹下的文件。 · 属性

属性 描述Path 与文件列表框的 Path 属性相同FileName 用于返回或设置一个被选中的文件名。Pattern 用于返回或设置列表框内文件的显示模式,该属性的类型为字符

串型,默认值为“ *.*” 。可同时使用多种模式,用分号“ ”; 分隔不同的模式。例如 File1.Pattern="*.COM;*.EXE"

MultiSelect 设置是否允许选择多个文件

Page 13: 第 12 章  处理文件

Visual Basic 程序设计教程13

· 常用事件

Click 事件

DblClick 事件

Pathchange 事件

Patternchange 事件

Page 14: 第 12 章  处理文件

Visual Basic 程序设计教程14

【例 12-2 】设计一个如图 12.4所示界面,演示了文件系统控件之间的关系。界面中驱动器、文件夹和文件列表框的名称分别

为 Drive1 、 Dir1 和 File1 ,组合框的名称为 Combo1 ,其 Style 属性为 2 。

Page 15: 第 12 章  处理文件

Visual Basic 程序设计教程15

Private Sub Form_Load() Combo1.AddItem "所有文件 (*.*)" Combo1.AddItem "文本文件 (*.TXT)" Combo1.AddItem "图形文件 (*.bmp;*.jpg)" Combo1.ListIndex = 0 Dir1.Path = "c:\windows" End Sub

Page 16: 第 12 章  处理文件

Visual Basic 程序设计教程16

Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub

Page 17: 第 12 章  处理文件

Visual Basic 程序设计教程17

Private Sub Combo1_Click() If Combo1.Text = "所有文件 (*.*)" Then File1.Pattern = "*.*" ElseIf Combo1.Text = "文本文件 (*.TXT)" Th

en File1.Pattern = "*.TXT" ElseIf Combo1.Text = "图形文件 (*.bmp;*.jp

g)" Then File1.Pattern = "*.bmp;*.jpg" End If End Sub

Page 18: 第 12 章  处理文件

Visual Basic 程序设计教程18

其中 Sub Combo1_Click() 内的程序代码也可以写成:

·M=InStr(1,Combo1.Text,"(")

·N=InStr(1,Combo1.Text,")")

·File1.Pattern = Mid(Combo1.Text,M+1,N-M-1)

Page 19: 第 12 章  处理文件

Visual Basic 程序设计教程19

·VB 提供了许多与文件操作有关的语句和函数,使用户可以在应用程序中很方便地对文件和文件夹进行删除、复制和获取文件有关属性等操作,这里简单介绍常用的几个语句。

1. ChDrive 语句 格式: ChDrive drive 功能:改变当前驱动器。 示例: ChDrive "D:"

Page 20: 第 12 章  处理文件

Visual Basic 程序设计教程20

2. MkDir 语句 格式:MkDir folder 功能:创建一个新的文件夹,如果设置了一个无效 的文件夹存储路径,将会产生错误。 示例:MkDir "C:\TMP":MkDir "C:\TMP\ABC"

Page 21: 第 12 章  处理文件

Visual Basic 程序设计教程21

3 . RmDir 语句格式: RmDir folder功能:删除一个存在的空文件夹,文件夹内不能有文 件。如果有文件,先用 Kill 语句删除所有文件。示例: RmDir "C:\TMP\ABC"4. ChDir 语句格式: ChDir path功能:改变当前文件夹示例: ChDir "C:\TMP"

Page 22: 第 12 章  处理文件

Visual Basic 程序设计教程22

5. FileCopy 语句格式: FileCopy source,destination功能:复制一个指定源文件到目标位置,用来确定 复制的源文件名和目标文件名,它们都可包 括文件的存储路径,不能复制一个已经打开 的文件。示例: FileCopy "C:\abc.txt", "C:\TMP\bbb.tx

t"

Page 23: 第 12 章  处理文件

Visual Basic 程序设计教程23

6. Kill 语句格式: Kill file功能:删除指定的文件,必要时文件名应指明它的存储路 径。为了删除一类文件,可以使用文件通配符。示例: Kill "C:\TMP\*.txt"7. Name 语句格式: Name old_name As new_name功能:重新命名一个文件或文件夹。 Name 语句具有移动文

件 的功能,即在重新命名时并将其移动到一个不同的文

Page 24: 第 12 章  处理文件

Visual Basic 程序设计教程24

件夹 ,不能重新命名一个已经打开的文件。改名示例: Name "C:\TMP\bbb.txt" as "aaa.txt"移动示例: Name "C:\TMP\aaa.txt" as "c:\bbb.txt"

8. Shell 方法 ( 函数 )格式: Shell command_file[,window_style] 或 Shell(command_file[,window_style])功能:调用各种外部的可执行文件 ( 不能调用操作系统的 各种内部命令 ) 。

Page 25: 第 12 章  处理文件

Visual Basic 程序设计教程25

说明: command_file 用以确定要执行的外部文件的文件名

和目录路径。 window_style 为数值型表达式,用以 设置 Shell 窗口的初始状态值。该值也可使用 VB 系 统的符号常量,如表 12.5所示。9. CurDir 函数格式: CurDir ([drive] )功能:返回指定盘或默认盘的当前文件夹。10. FileLen 函数格式: FileLen(file_name)功能:返回是指定文件的长度,单位为字节数。

Page 26: 第 12 章  处理文件

Visual Basic 程序设计教程26

·VB 中的顺序文件是普通的文本文件,文件中的每个数据以 ASCII 码 ( 文本 ) 形式存储,因此能被不同语言的程序共享或直接打印输出,也可由文本编辑器 ( 如记事本或 EDIT等 ) 进行修改。

· 顺序文件结构比较简单。它的存储方式是顺序存储,即一个数据接着一个数据地顺序排列,只是提供了第 1 个数据的存储位置。要查找一个数据时,必须从头开始一个一个地读取直到找到所要的数据。

Page 27: 第 12 章  处理文件

Visual Basic 程序设计教程27

12.5.2 打开顺序文件打开文件使用是 Open 语句,其格式为:Open 文件名 For模式 As [#] 文件号 1 .文件名:指定打开的文件。 2 .模式:用于指定文件的操作方式,顺序文件共有 3 种操作方式,可以选择下列三种形式之一: ( 1 ) Input :打开一个已经存在的文件作读操作。 ( 2 ) Output :打开一个新文件作写操作,如果文件标识符指定的文件已经存在,则文件中的原内容将被清除。

Page 28: 第 12 章  处理文件

Visual Basic 程序设计教程28

( 3 ) Append :打开文件后在文件末尾作追加数据的写操作,如指定的文件已经存在,则文件中的原内容被保留,否则将创建一个新文件。 3 .文件号:文件号也称通道号,是一个介于1 ~ 512之间的整型。 4. FreeFile 函数:用来获取一个可用的最小的空闲通道号,使用格式为: FileNo=FreeFile() 或 FileNo=FreeFile0

Page 29: 第 12 章  处理文件

Visual Basic 程序设计教程29

· 例如:·Open "C:\TMP\ABC.DAT" For Input As 1 :表示

以读文件的操作模式,打开在 C:\TMP 路径下的名为 ABC.DAT的数据文件。

·Open FileName For Output As FileNo :表示以写文件的操作模式,创建一个新文件,文件名及存储路径由变量 FileName 的值决定,通道号由变量 FileNo 的值决定。

Page 30: 第 12 章  处理文件

Visual Basic 程序设计教程30

12.5.3 写入操作

1. Write # 语句。将表达式的值写入与文件号相关的顺序文件。使用格式如下。

Write #文件号 ,[输出表达式列表 ]

Page 31: 第 12 章  处理文件

Visual Basic 程序设计教程31

( 1 )输出表达式列表的各表达式间可用逗号( , ) 或分号 (; ) 分隔,两种分隔符的效果相同。( 2 )自动在写入文件的各输出项之间,加入分隔符逗号“,”;字符类型输出项以双引号作为界限符;写入文件的逻辑型、日期型数据或空值(NULL) ,是以 #号作为数据项的界限符,如 #TRUE#、 #FALSE#、 #1999-10-30#、 #NULL#。

Page 32: 第 12 章  处理文件

Visual Basic 程序设计教程32

( 3 )最后一个输出项的后面如果没有逗号或分号,将自动追加回车换行符。

( 4)如果语句中没有任何输出项即只有通道号及后面的逗号,将向文件中输出一个空行。

Page 33: 第 12 章  处理文件

Visual Basic 程序设计教程33

【例 12-3 】 利用 Write # 语句把数据写入文件 Private Sub Form_Click() Dim nn As Integer, cc As String Open "d:\temp.txt" For Output As #1 nn = 123: cc = "ABCDE" Write #1, nn * 2, 5 > 3 Write #1, cc, Write #1, "hello" Write #1, Write #1, #03/01/2001# Close #1 End Sub

Page 34: 第 12 章  处理文件

Visual Basic 程序设计教程34

2. Print # 语句。它是一种格式化的文件输出语句,其数据输出格式与 Print 方法在窗体上输出的格式类似。使用格式如下。 Print #文件号 ,[输出表达式列表 ]它与Write # 语句的区别在于, Print # 语句完全按程序代码中设定的格式输出数据。其中输出表达式列表的各输出项之间及语句末尾,可用逗号或分号分隔,它们的分隔效果不同(关请参见 2.7.3 )。

Page 35: 第 12 章  处理文件

Visual Basic 程序设计教程35

12.5.4 关闭顺序文件

· 结束各种读写操作以后,必须将打开的文件关闭,否则将会造成数据丢失。

· 关闭文件的语句格式为:

Close [[#] 文件号 [,[#] 文件号 ]...]

Page 36: 第 12 章  处理文件

Visual Basic 程序设计教程36

· 在完成了数据文件的写操作后,当 VB 程序执行到 Close 语句,则在关闭并释放文件缓冲区前,会在把缓冲区中的数据写入磁盘后再执行关闭操作,同时释放内存空间。· 当 VB 程序执行到 End 语句或单击窗体关闭按钮时,也会关闭此时尚未关闭的文件。

Page 37: 第 12 章  处理文件

Visual Basic 程序设计教程37

12.5.5 读出操作· 要把数据从顺序文件中读出,应该以 Input模式打开文件,然后使用 Input # 、 Line Input #语句或 Input 函数从文件中读出数据。通常 Input 用来读出由Write写入的数据, Line Input和 Input 函数用来读出由 Print写入的数据。

Page 38: 第 12 章  处理文件

Visual Basic 程序设计教程38

·1. Input # 语句。从指定的文件中读出数据项,并把它们存入各自的变量中。使用格式为:

Input #文件号,变量列表其中,变量名列表中的变量个数决定了该语句从文件中读取的数据个数。例如,语句 :Input #1,nn%,cc$,dd

Page 39: 第 12 章  处理文件

Visual Basic 程序设计教程39

·2. Line Input # 语句。 仅以回车换行符 (Chr(13)+Chr(10)) 作为界限,从文件中读入一整行的字符,并赋予相应的字符型变量。使用格式为:

Line Input #文件号 , 字符型变量

Page 40: 第 12 章  处理文件

Visual Basic 程序设计教程40

·3 . Input 函数。从文件中读取指定字符数的字符。使用格式为:

Input (字符数 , #文件号)

例如 b$=Input(10,#1) 表示从文件号为 1 的顺序文件中读出 10 个字符。

Page 41: 第 12 章  处理文件

Visual Basic 程序设计教程41

·4. EOF 函数。判断是否已读完了文件中的所有数据 ( 即已到了文件末尾 ) 。使用格式为:

EOF( 文件号 )

如果指定的文件已经读到了文件末,则函数返回 True ,否则返回 False 。

Page 42: 第 12 章  处理文件

Visual Basic 程序设计教程42

·5. LOF 函数。获取已打开文件的总字节数。如果返回 0 ,表示文件为空。使用格式为:

LOF( 文件号 )

例如 Text1.text=Input(LOF(1),1) 表示把文件号为 1 的文件内容全部读出显示在文本框中。

Page 43: 第 12 章  处理文件

Visual Basic 程序设计教程43

【例 12-4】利用 EOF 函数,统计已打开的某文件中的数据个数,通道号为 1 ,统计结果显示在Text1 文本框内。其中文件打开和关闭在窗体的Load 和 UnLoad 事件中完成。

Page 44: 第 12 章  处理文件

Visual Basic 程序设计教程44

Private Sub Command1_Click() Dim Numb as Integer,ntt as String Numb = 0 Do While Not EOF(1) Input #1, ntt Numb = Numb + 1 Loop Text1.Text = Str(numb) End Sub

Page 45: 第 12 章  处理文件

Visual Basic 程序设计教程45

【例 12-5】设计一个应用程序,界面如图图 12.6所示。利用窗体输入若干位同学的姓名和计算机成绩,并将它存入文件

中。要求操作过程为 :先击“保存”按钮 cmdSave ,决定要保 存的文件;然后在两 文本框 txtName 和 txtScore 中输入姓名和成绩,

击“添加”按钮 cmdAdd将数据送入文件;击“退出” cmdExit 关闭文件,并结束程序运行。

Page 46: 第 12 章  处理文件

Visual Basic 程序设计教程46

Private Sub Form_Load() cmdAdd.Enabled = False End Sub Private Sub cmdSave_Click() Dim Fname as String cdl_1.ShowSave Fname = cdl_1.FileName If Trim(cdl_1.FileTitle) <> "" then Open Fname For Output As #1 cmdAdd.Enabled = True cmdSave.Enabled = False Else Msgbox "必须选择一个文件 " End if End Sub

Page 47: 第 12 章  处理文件

Visual Basic 程序设计教程47

Private Sub cmdAdd_Click() ' 向文件添加数据 If Trim(txtName.Text) <> "" Then Write #1, Trim(txtName.Text), Val(txtScore.Text) End If txtName.Text = "" : txtScore.Text = "" txtName.SetFocus End Sub Private Sub cmdExit_Click() ' Close #1 Unload Me End Sub

Page 48: 第 12 章  处理文件

Visual Basic 程序设计教程48

【例 12-6】利用例 12.5输入的数据,在窗体的文本框 txtContent 中显示所有同学的姓名和计算机成绩,并求出班平均分显

示在文本框 txtAverAge 中

。设计界面如图所示。

Page 49: 第 12 章  处理文件

Visual Basic 程序设计教程49

Private Sub cmdShow_Click() Dim Sum as Integer,Count as Integer,Name as String, Score as Integer cdl_1.ShowOpen if cdl_1.FileTitle <> "" then Open cdl_1.FileName For Input As #1 Else Msgbox "必须打开文件 " Exit sub End if Sum = 0: Count = 0

Page 50: 第 12 章  处理文件

Visual Basic 程序设计教程50

Do While Not EOF(1) Input #1, Name, Score txtContent.Text = txtContent.Text & Name & Score txtContent.Text = txtContent.Text & Chr(13) & Chr(10) '显

示信息后换行 Sum = Sum + Score Count = Count + 1 '统计人数 Loop txtAverage = Sum / Count Close #1 End Sub

Page 51: 第 12 章  处理文件

Visual Basic 程序设计教程51

· 前面介绍了怎样建立顺序文件及如何访问它们以找到特定的信息,访问顺序文件的数据需要从头到尾地依次读写。而在许多应用程序中是要求立即定位特定记录的信息。如自动柜员机的应用程序,需要处理银行数以万计的用户帐号,需要迅速检查特定帐号上的信息。这类即时存取操作可以使用随机文件实现。随机文件的记录可以直接访问,而不必通过搜索其它记录。

Page 52: 第 12 章  处理文件

Visual Basic 程序设计教程52

12.6.1 什么是随机文件· 随机文件是由一个个记录所构成的,记录通常是描述一个对象的基本单位,它由若干个相互关联的数据项组成。· 在随机文件中,文件的访问是按记录进行操作的,每个记录都有一个记录号且长度都是完全相同的。

Page 53: 第 12 章  处理文件

Visual Basic 程序设计教程53

· 打开随机文件后,可以同时进行读 /写操作,读写数据速度较快,数据更新容易。· 随机文件的数据以二进制格式存储,需要特定的程序使用它们,用文本编辑器打开则难以正确显示。

学号 姓名 计算机成绩

Page 54: 第 12 章  处理文件

Visual Basic 程序设计教程54

12.6.2 记录用户自定义类型1 .定义用户自定义类型· 用户自定义类型是派生数据类型,它们是使用其

它类型的对象构造出来的 Private Type Student Xh as String * 10 Name as String * 8 Score as Integer End Type

Page 55: 第 12 章  处理文件

Visual Basic 程序设计教程55

2 .访问用户自定义类型的变量·Type 定义是用户所定义的一个新的数据类型。在程序中

可以使用所定义的类型来声明变量,其方法与 VB 变量声明相同。

Dim Std as Student

·访问用户自定义类型变量的成员与访问控件的属性类似,采用点运算符“ .”。例如给 Std 变量的成员赋值,可以使用下列语句:Std.Xh ="3512354012“Std.Name=" 张三“Std.Score=90

Page 56: 第 12 章  处理文件

Visual Basic 程序设计教程56

12.6.3 打开和关闭随机文件· 随机文件的打开仍用 Open 语句。使用格式为:Open 文件名 [For Random] As [#] 文件号 Len=记录长度1 .如果指定文件名的文件不存在,会自动创建。2 . Random是默认的访问模式。随机文件读 /写的访问模式是相

同的,文件打开后,可同时进行读 /写操作。3 .“ Len=记录长度”指定了每条记录的长度,如果设置的记录长度比实际的记录长度短,会产生错误;如果比实际的记录长度长,可以写入,当然会浪费磁盘存储空间。可以用 Len() 函数来确定记录的长度。

Page 57: 第 12 章  处理文件

Visual Basic 程序设计教程57

4.文件打开时,记录指针指向第 1 条记录。例如以下语句打开了 D 盘根目录下的 Student.dat 随

机文件:Open "D:\ Student.dat" For Random As # 1 Len=L

en(Std)

· 关闭随机文件的方法同顺序文件一样,用 Close语句即可。

Page 58: 第 12 章  处理文件

Visual Basic 程序设计教程58

12.6.4 读写随机文件1 .写操作 Put #文件号 ,[记录号 ],变量

2 .读操作 Get #文件号 ,[记录号 ],变量

3 . Seek 函数和 Seek 语句 ( 1 ) Seek 函数。使用格式为: Seek (文件号) 函数返回当前的读 /写位置,即当前所指的记录号,返回值的类型

是长整型。 ( 2 ) Seek 语句。使用格式为: Seek #文件号,记录号语句设置

下一个读 /写操作的记录号。

Page 59: 第 12 章  处理文件

Visual Basic 程序设计教程59

【例 12-7】设计程序,界面如图所示。利用随机文件保存学生的成绩,可以输入学号、姓名和计算机成绩,浏览数据。

Page 60: 第 12 章  处理文件

Visual Basic 程序设计教程60

Private Type student Xh As String * 10 Name As String * 8 Score As IntegerEnd TypeDim Std As studentPrivate Sub Form_Load() Dim Lastrec As Integer, i As Integer Open "d:\student.dat" For Random As #1 Len = Len(Std) Lastrec = LOF(1) / Len(Std) ' 总记录数=文件长度 /记录长度 List1.Clear For i = 1 To Lastrec ' 读出所有记录 Get #1, i, Std List1.AddItem Std.Xh & " " & Std.Name & " " & Std.Score Next Close #1End Sub

Page 61: 第 12 章  处理文件

Visual Basic 程序设计教程61

Private Sub Command1_Click() Dim lastrec As Integer Std.Xh = Text1.Text Std.Name = Text2.Text Std.Score = Val(Text3.Text) Open "d:\student.dat" For Random As #1 Len = Len(Std) lastrec = LOF(1) / Len(Std) Put #1, lastrec + 1, Std '当前数据追加到最后 Close #1 Call Form_Load ' 也可以直接用 List1.AddItem方法将新记录添加到列表框中 Text1.Text = "" ' 清空以便下次输入 Text2.Text = "" Text3.Text = "" Text1.SetFocusEnd Sub

Page 62: 第 12 章  处理文件

Visual Basic 程序设计教程62

·VB6开始允许使用采用 FSO( File SystemObje ct ,文件系统对象)模型方法。这是 Windows

提供的文件系统对象,它使得文件系统操作变得简单多了。

·FSO提供了一整套对文件系统进行管理和操作的属性、方法和事件,可以实现文件夹的创建 、改名、移动和删除操作,能够检测文件夹是否存在,可以创建文本文件,也能获取驱动器、文件夹及文件的信息,

Page 63: 第 12 章  处理文件

Visual Basic 程序设计教程63

例如文件名称、创建日期或最近修改日期等。但是 FSO不支持二进制文件的创建和操作,因此 FSO对象模型还不能完全代替传统的文件访问机制。 下面我们以一个简单的例子,介绍 FSO对象模型的使用方法。

Page 64: 第 12 章  处理文件

Visual Basic 程序设计教程64

【例 12-8】利用 FSO对象模型在 D 盘根目录下建立Test 文件夹,并在 Test 文件夹下建立一个名为 testfile 的文本文件。

Private Sub Form_Click() Dim Fs As Object,A As Object ' 利用 CreateObject 函数返回一个基于 FSO的对象 (fs) Set Fs = CreateObject("Scripting.FileSystemObject") If Not Fs.FolderExists("D:\test") Then ' 判断文件夹是否存在 Fs.CreateFolder ("D:\test") ' 创建文件夹 End If

Page 65: 第 12 章  处理文件

Visual Basic 程序设计教程65

' 利用 CreateTextFile 方法创建文件作为一个 TextStream 对象(A)

Set A = fs.CreateTextFile("D:\test\testfile.txt", True)

A.WriteLine ("This is a test.") ' 向创建的文本文件中写入一行文本

A.Close 'Close 方法刷新缓冲区并关闭文件

End Sub

Page 66: 第 12 章  处理文件

Visual Basic 程序设计教程66

【例 12-9】统计顺序文件中英文字符、数字和其

它字符的个数,

界面如图所示。

Page 67: 第 12 章  处理文件

Visual Basic 程序设计教程67

【例 12-10 】 在 D 盘根目录下的 student.txt 的顺序文件中,已存入了若干个学生的姓名 ( 字符型 )和某一门课程成绩 ( 数值型 ) 。

设计一个应用程序界面如图 所示。窗体启动时,在列表 框 List1 中显示学生姓名和 成绩;单击“排序”按钮在 列表框 List2 中从高到低显示学生姓名和成绩;单

击“保存”按钮把排序后的信息保存到 D 盘根目录下的 student_sort.txt 文件中。