Vis
ual
B
AS
IC




Visual Basic 程序设计
第 12章文件处理
万博科技职业学院
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
主要内容
? 文件系统控件
?驱动器列表框 DriveListBox
?目录列表框 DirListBox
?文件列表框 FileListBox
? 文件处理语句
? 文件系统对象 FileSystemObject (FSO)
? 传统的文件 I/O语句
?Open,Close
?Input,Write
?Line Input,Print
?Get,Put
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
文件系统控件
? DriveListBox(驱动器列表框)主要属性:
? Drive 驱动器名
? DirListBox-目录列表框
? Path 选中的目录(路径)
? FileListBox-文件列表框
? Path 显示的目录
? Filename 最后选中的文件名
? Pattern 样式(类似于过滤器 Filter)
? 都有类似 listbox的属性如 List, listcount等
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
三种列表框的同步
'选择驱动器时,目录列表框跟着改变
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
'选择目录时,文件列表框跟着改变
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
常用的文件处理语句
? ChDrive <驱动器名 > 改变当前驱动器
? ChDir <路径 > 改变当前路径
? MkDir <路径 > 创建新目录
? RmDir <路径 > 删除目录
? Kill <文件名 > 删除文件
? SetAttr <文件名 >,<属性 > 设置文件属性
? FileCopy <源文件 > <目的 > 拷贝文件
? Name <原文件名 > As <新文件名 > 更名
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
文件系统对象
把驱动器、文件夹、文件等都看作对象:
? FileSystemObject (FSO) 文件系统
? Drive/Drives 驱动器 /驱动器集合
? Folder/Folders 文件夹 /文件夹集合
? File/Files 文件 /文件集合
? TextStream 文本流
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
文件系统对象操作
? 引用 Microsoft Scripting Runtime
? 创建 FSO对象。两种方法:
? Dim <变量名 > as New FileSystemObject
? Dim fs as New FileSystemObject
? Set <变量名 > =CreateObject(,Scripting.FileSystemObject”)
? Set fs =CreateObject(,Scripting.FileSystemObject”)
? 使用 FSO访问驱动器、文件夹和文件。例如
? Dim fs as New FileSystemObject
? Dim fil as File
? set fil=fs.getfile(“c:\config.sys”)
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
传统的文件读写
? 文件操作,
?打开文件
?读写文件
?关闭文件
? 数据文件访问类型
?顺序型
?随机型
?二进制型
? 传统的文件 I/O语句
?Open,Close
?Input,Write
?Line Input,Print
?Get,Put
? 对不同类型文件用不
同的语句
? 有关函数
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
顺序文件的打开
? 语句格式,
Open <文件名 > For {Input | Output |
Append} As <文件号 > [Len=buffersize]
说明,
Input -为读取文件而打开,文件应存在
Output-为写入数据而打开,新建
Append-为追加数据而打开,也可新建
? 文件号:读写和关闭时用。同时打开多个文件时
要指定不同的文件号。
? 例,Open,c:\a.txt” for Input as #1
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
顺序文件的读取
语句格式:
? 读 1行到一个变量:
Line Input #<文件号 >,<变量名 >
? 用下列函数读指定长度:
Input (<字符数 >,<文件号 >)
InputB(<字节数 >,<文件号 >)
? 读一列数据到一列变量:
Input # <文件号 >,<变量名 1>,<变量名 2>,…
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
与文件有关的函数
? EOF(<文件号 >) — End Of File
测试文件末函数( Boolean型)
? LOF(<文件号 >) — Length of File
返回已打开文件的长度(字节数)
? FileLen (<文件名 >)
返回未打开文件长度(字节数)
? FreeFile
返回下一个可供 Open 语句 使用的文件号
? StrConv(<字符串 >,<类型 >)
字符串转为指定类型。
? CurDir [(<驱动器名 >)]
返回当前目录
又,App.Path (属性)
— 应用程序文件所在路径
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
顺序文件的写入
语句格式:
? Print # <文件号 >,<数据 > [,| ;]
与一般的 Print语句相比,只多了文件号部分,
以表示输出到文件。其他都相同。
? Write # <文件号 >,<数据 >
与 Input语句对应:用 Write写入的数据,用
Input读出。
Input
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
关闭文件
? 语句格式
Close [<文件号 1>] [,<文件号 2>]
? 不带参数的 Close语句将关闭所有打开的文
件。
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
访问随机存取文件
? 打开文件:
Open <文件名 > [For Random] as <文件号 >
Len=<记录长 >
? 读文件
Get #<文件号 >,<记录号 >,<变量名 >
? 写文件:
Put #<文件号 >,<记录号 >,<变量名 >
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
用户定义数据类型
? 语法:
[Public |Private] Type 类型名
<Field1> as type1
[<Field2> as type2]
<[Field3> as type3]

[<Fieldn> as typen]
End Type
? 先定义,后声明
? 例:定义学生记录格式
Public Type Stu
xm as String*6 ?姓名
xh as String*8 ?学号
xb as String*1 ?性别
cj(3) as Integer ?成绩
yw as Integer ?语文成绩
wy as Integer ?外语成绩
End Type
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.