32
第第第第 第第第第第第第第 第第第第第第第1. 第第 VB 第第第第第第 第第第第第第第 、; 2.第第第第第第第第第 第第第 第 :、 /第 第第第 、; 3.第第第第第第第第第 第第第 第 :、 /第 第第第 、; 4.第第第第第第第第第第 第第第 第 :、 /第 第第第 、。 5.第第第第第第第第第第第第第第第6. 第第 FSO 第第第第第第第 第第第第第第第第第第第第第 ,。

第十六章 设计文件应用程序

  • Upload
    gwyn

  • View
    151

  • Download
    0

Embed Size (px)

DESCRIPTION

第十六章 设计文件应用程序. 本章内容及要求: 掌握 VB 中文件的概念、种类及其结构; 掌握顺序文件的操作:打开、读 / 写、关闭; 了解随机文件的操作:打开、读 / 写、关闭; 了解二进制文件的操作:打开、读 / 写、关闭。 了解常用的文件操作的语句和函数。 学习 FSO 对象模型的结构,掌握对象变量的定义和使用。. 本章重点: 文件的操作:打开、读 / 写、关闭。. 数据项. 16-1 文件的概念. 一、文件及其结构 文件: 存储在外部介质上数据的集合。 要求操作系统中的文件系统能提供用户 按名存取 方式 在操作系统中有两种文件: - PowerPoint PPT Presentation

Citation preview

Page 1: 第十六章  设计文件应用程序

第十六章 设计文件应用程序本章内容及要求:1. 掌握 VB 中文件的概念、种类及其结构;2. 掌握顺序文件的操作:打开、读 / 写、关闭;3. 了解随机文件的操作:打开、读 / 写、关闭;4. 了解二进制文件的操作:打开、读 / 写、关闭。5. 了解常用的文件操作的语句和函数。6. 学习 FSO 对象模型的结构,掌握对象变量的定

义和使用。

Page 2: 第十六章  设计文件应用程序

本章重点:

文件的操作:打开、读 / 写、关闭。

Page 3: 第十六章  设计文件应用程序

16-1 文件的概念一、文件及其结构 文件:存储在外部介质上数据的集合。 要求操作系统中的文件系统能提供用户按名存取方式 在操作系统中有两种文件: 字符流无结构文件和记录式有结构文件 磁盘文件是由数据记录组成。记录是计算机处理数据的基本单位,它由一组具有共同属性相互

关联的数据项组成。

学号 姓名 数学成绩 语文成绩 物理成绩 总分

数据项

Page 4: 第十六章  设计文件应用程序

记录 1 记录 2 …… 记录 N 文件结束标志

二、文件分类根据访问文件的方式将文件分成 3 类:

顺序文件、 随机文件、 二进制文件。

1 .顺序文件 顺序文件( Sequential File )是普通的文本文件。顺序文件中的记录按顺序一个接一个地排列。读写文件存取记录时,都必须按记录顺序逐个进行。一行一条记录(一项数据),记录可长可短,以“换行”字符为分隔符号。

结构简单 ; 但不能灵活存取,适用于不经常修改的文件

Page 5: 第十六章  设计文件应用程序

#1记录 1 #2记录 2 …… #N记录 N

2 .随机文件 随机文件( Random Access File )是可以按任意次序读写的文件,其中每个记录的长度必须相同。在这种文件结构中,每个记录都有其唯一的一个记录号,所以在读取数据时,只要知道记录号,便可以直接读取记录。

存取速度快,易更新;但占用空间大,设计程序较复杂

Page 6: 第十六章  设计文件应用程序

3 .二进制文件 二进制文件( Binaryfile )是字节的集合,直接把二进制码存放在文件中。 除了没有数据类型或者记录长度的含义以外,它与随机访问很相似。 二进制访问模式是以字节数来定位数据,在程序中可以按任何方式组织和访问数据,对文件中各字节数据直接进行存取。

灵活性很大 ; 相对的 , 程序更复杂

Page 7: 第十六章  设计文件应用程序

打开文件 读出或写入 关闭文件

16-2 顺序文件在程序中对文件的操作,通常按 3 个步骤进行:

16-2-1 顺序文件的打开与关闭

1. 打开顺序文件

其使用格式如下:

Open FileName For [Input | Output | Append] [Lock]As filenumber [Len = Buffersize]

Page 8: 第十六章  设计文件应用程序

例如:

OPEN “C:\TEMP\A.TXT ” FOR Input AS #1

OPEN“C:\TEMP\B.TXT ” FOR Output AS #2

OPEN“C:\TEMP\C.TXT ” FOR Append AS #3

2. 关闭文件—— Close 语句使用格式如下: Close [filenumberlist]

其中:filenumberlist :可选项,为文件号列表,如: #1, #2, #3 , 例如: Close #1,#2,#3

如果省略,则将关闭 Open 语句打开的所有活动文件。 Close

Page 9: 第十六章  设计文件应用程序

16-2-2 顺序文件的读写操作 向文件写入内容使用 Print # 语句或 Write# 语句,在程序是数据输出。

1 . Print 语句使用格式: PRINT #< 文件号 > , [< 输出列表 >]

说明:文件号为以写方式打开文件的文件号; 输出列表为用分号或逗号分隔的变量、常量、空格和定位函数序列。 2 . Write 命令使用格式: Write #< 文件号 > , [< 输出列表 >]

Write 语句采用紧凑格式。数据项之间插入“ ,” ,并给字符数据加上双引号。

Page 10: 第十六章  设计文件应用程序

例 16.1 Print 与 Write 语句输出数据结果比较。Private Sub Form_Click()

Dim Str As String, Anum As Integer

Open "D:\Myfile.dat" For Output As 1

Str = "ABCDEFG"

Anum = 12345

Print #1, Str, Anum

Write #1, Str, Anum

Close #1

End Sub

print

Write

Page 11: 第十六章  设计文件应用程序

例 16.2 编程把一个文本框中的内容,以文件形式存入磁盘。假定文本框的名称为 Mytxt ,文件名为 Myfile.dat 。

方法 1 :把整个文本框的内容一次性地写入文件。Open "Myfile.dat" For Output As #1

Print #1, Mytxt.Text

Close #1

方法 2 :把整个文本框的内容一个字符一个字符地写入文件。Open "Myfile.dat" For Output As #1

For i=1 To len(Mytxt.Text)

Print #1,Mid(Mytxt.Text,i,1);

Next i

Close #1

Page 12: 第十六章  设计文件应用程序

2. 顺序文件读操作 从现存文件中读入数据,应以顺序 Input 方式打开该

文件。然后使用 Input# 语句、 Line Input# 语句和 Input

( ) 函数读入到程序变量中。 使用格式如下:

INPUT # 文件号 , 变量列表把读出的每个数据项分别存放到所对应的变量。

LINE INPUT # 文件号 , 字符串变量读一行到变量中,主要用来读取文本文件。

INPUT$( 读取字符数 , # 文件号 )

读取指定的数量的字符,作为函数的返回值。

Page 13: 第十六章  设计文件应用程序

3 .与读文件操作有关的几个函数( 1 ) Lof 函数 LOF 函数将返回某文件的字节数。例如, LOF(1)返回 #

1 文件的长度,如果返回 0值,则表示该文件是一个空文件。( 2 ) Loc 函数 Loc 函数将返回在一个打开文件中读写的记录号;对于

二进制文件,它将返回最近读写的一个字节的位置。( 3 ) Eof 函数 Eof 函数将返回一个表示文件指针是否到达文件末尾的标志。如果到了文件末尾, Eof 函数返回 TRUE(-1) ,否则返回 FALSE(0) 。

Page 14: 第十六章  设计文件应用程序

例 16.3 编程将一文本文件的内容读到文本框 假定文本框名称为 txtTest ,文件名为 MYFILE.TXT 。

可以通过下面三种方法来实现。 方法 1 :一行一行读

txtTest.Text = ""

Open "MYFILE.TXT" For Input As #1

Do While Not EOF(1)

Line Input #1, InputData

txtTest.Text = txtTest.Text + InputData+vbCrLf

Loop

Close #1回车换行

Page 15: 第十六章  设计文件应用程序

方法 2:一次性读txtTest.Text = ""Open "MYFILE.TXT" For Input As #1txtTest.Text = Input( LOF(1),1)Close #1

方法 3:一个个字符读Dim InputData as String*1txtTest.Text = ""Open "MYFILE.TXT" For Input As #1Do While Not EOF(1)

Input #1, InputDatatxtTest.Text = txtTest.Text + InputData

LoopClose #1

Page 16: 第十六章  设计文件应用程序

例 16.4 利用文件系统控件、组合框、文本框,制作一个文件浏览器。 要求:组合框限定文件列表框中显示文件的类型,如选定“ *.Txt” 文件。当在文件列表框选定欲显示的文件时,在文本框显示出该文件的内容。

程序运行效果如图

Page 17: 第十六章  设计文件应用程序

16-3 随机文件16-3-1 随机文件的打开与关闭1 .打开随机文件打开随机文件格式为:OPEN FileName FOR Random [Access <Mode>][Lock] As fi

lenumber [Len = reclength]

用 OPEN 命令以 Random 模式打开随机文件,同时指出记录的长度。文件打开后,可同时进行读写操作。 例如:

Open "d:\abc.dat" For Random Access Read As #1 Len = 20

Page 18: 第十六章  设计文件应用程序

2 .关闭随机文件 随机文件的关闭与关闭顺序文件相同。

16-3-2 写随机文件 Put [#] 文件号, [ 记录号 ] ,变量名

将一个记录变量的内容写到指定的记录位置处。忽略记录号,则表示在当前记录后的位置插入

一条记录。

16-3-3 读随机文件Get [#] 文件号, [ 记录号 ] ,变量名忽略记录号,则读出当前记录后的那一条记录。

Page 19: 第十六章  设计文件应用程序

1. 打开文件 Open " 文件名 " For Binary As # 文件号

2. 写操作Put [#] 文件号, [ 位置 ] ,变量名写入长度等于变量长度的数据。

3. 读操作GET [#] 文件号, [ 位置 ] ,变量名

从指定位置开始读出长度等于变量长度的数据存入变量中,数据读出后移动变量长度位置,如果忽略位置,则表示从文件指针所指的位置开始读出数据,数据读出后移动变量长度位置。

16-4 二进制文件 ( 了解 )

Page 20: 第十六章  设计文件应用程序

16-5 常用的文件操作语句和函数

1. 改变当前驱动器( ChDrive 语句)格式: ChDrive drive

功能:改变当前系统驱动器。说明: 如果 drive 为“”,则当前驱动器将不会改变;如果 dr

ive 中有多个字 符,则 ChDrive 只会使用首字母。 例如: ChDrive "D" 及 ChDrive "D:\"

ChDrive "Dasd" 都是将当前驱动器设为 D 盘。

16-5-1 文件操作语句

Page 21: 第十六章  设计文件应用程序

2. 改变当前目录( ChDir 语句) 格式: ChDir path 功能:改变当前目录。 例如: ChDir "D:\TMP" 说明: ChDir 语句改变缺省目录位置,但不会改变缺省驱动器位置。

例如,如果缺省的驱动器是 C ,则上面的语句将会改变驱动器 D 上的缺省目录,但是 C仍然是缺省的驱动器:

3. 删除文件( Kill 语句)格式: Kill pathname功能:删除文件。说明: pathname 中可以使用统配符“ *” 和“ ?” 。例如: Kill "*.TXT "

Kill "C:\Mydir\Abc.dat"

Page 22: 第十六章  设计文件应用程序

4. 建立(MkDir 语句)和删除( RmDir 语句)目录 建立目录格式: MkDir path

功能:创建一个新的目录。 例如: MkDir "D:\Mydir\ABC"

删除目录格式: RmDir path

功能:删除一个存在的目录。 说明:只能删除空目录。

例如:RmDir "D:\Mydir\ABC“

说明: RmDir 只能删除空子目录,如果想要使用 RmDi

r 来删除一个含有文件的目录或文件夹,则会发生错误。

Page 23: 第十六章  设计文件应用程序

5. 拷贝文件 —— FileCopy 语句 格式: FileCopy source , destination功能:复制一个文件。例如:

FileCopy "D:\Mydir\Test.doc“, "A:\MyTest.doc" 说明: FileCopy 语句不能复制一个已打开的文件。6. 文件的更名 —— Name 语句

格式: Name oldpathname As newpathname功能:重新命名一个文件或目录。

例: Name "D:\Mydir\Test.doc" As "A:\MyTest.doc" 说明: (1) Name 具有移动文件的功能。

(2) 不能使用统配符“ *” 和“ ?” ,不能对一个已打开的文件上使用 Name 语句。

Page 24: 第十六章  设计文件应用程序

7. 设置文件属性—— SetAttr 语句。格式: SetAttr FileName, attributes其其其其其其FileName :必要参数。一个文件名的字符串表达式。     Attributes :必要参数。常数或数值表达式,其总和用来表示文件的属性。 Attributes参数设置下表:

内部常数 数值 描 述VbNormal 0 常规 (缺省值 )

VbReadOnly

1 只读。VbHidden 2 隐藏。VbSystem 4 系统文件VbArchive 32 上次备份以后,文件已经改变

Page 25: 第十六章  设计文件应用程序

1. 获得当前目录—— CurDir 函数格式: CurDir[(drive)]

功能:利用 CurDir 函数可以确定指定驱动器的当前目录。 说明:可选的 Drive参数是一个字符串表达式,它指定一

个存在的驱动器。如果没有指定驱动器,或 Drive 是零长度字符串 (“”) ,则 CurDir会返回当前驱动器的路径。

例如: str=CurDir(“E:”)

获得 E 盘当前目录路径,并赋值给变量 Str

16-5-2 文件操作函数

Page 26: 第十六章  设计文件应用程序

2.获得文件属性—— GetAttr 函数。 格式: GetAttr(FileName)

功能:返回代表一个文件、目录、或文件夹的属性的 Integer 数据。 GetAttr返回的值及代表的含义下表

内部常数 数值 描 述VbNormal 0 常规vbReadOnly 1 只读VbHidden 2 隐藏VbSystem 4 系统文件VbDirectory 16 目录或文件夹VbArchive 32 上次备份以后,文件已经改变Vbalias 64 指定的文件名是别名

Page 27: 第十六章  设计文件应用程序

3. FileDateTime函数格式: FileDateTime(FileName)

功能:返回一个 Variant (Date) ,此值为一个文件被创建或最后修改后的日期和时间。

4. FileLen函数格式: FileLen(FileName)

功能:返回一个 Long ,代表一个文件的长度,单位是字节。

Page 28: 第十六章  设计文件应用程序

5. Shell函数和 Shell过程在 VB 中,可以调用在 DOS 下或 Windows 下运行的应用程序: 函数调用形式: ID=Shell( FileName [,WindowType] )

说明:执行一个可执行文件,返回一个 Variant (Doubl

e) ,如果成功的话,代表这个程序的任务 ID ,它是一个唯一的数值,用来指明正在运行的程序。若不成功,则会返回 0

过程调用形式: Shell FileName [,WindowType])

Page 29: 第十六章  设计文件应用程序

FileName :是要执行的应用程序名字符串,包括盘符、路径,它必须是可执行的文件。WindowType :为整型值,表示执行应用程序打开的窗口类型,其取值下表。

内部常量 值 描 述

VbHide 0 窗口被隐藏,且焦点会移到隐式窗口

VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置

VbMinimizedFocus

2 (缺省)窗口会以一个具有焦点的图标来显示(最小化 )

VbMaximizedFocus

3 窗口是一个具有焦点的最大化窗口

VbNormalNoFocus

4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动

VbMinimizedNoFocus

6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动

Page 30: 第十六章  设计文件应用程序

例如: ( windows98 下)' 调用执行 Windows 系统中的记事本i = Shell("C:\WINDOWS\NOTEPAD.EXE")

‘ 进入 MS_DOS状态j = Shell("c:\command.com", 1)

也可按过程形式调用:Shell "C:\WINDOWS\NOTEPAD.EXE"

Shell "c:\command.com", 1

注意,上面指定的执行文件,可能因不同计算机系统,文件的路径有所不同。

Page 31: 第十六章  设计文件应用程序

16-6 文件系统对象 说明: 本节为选学内容,学习较好的学生自学。

在 VB6.0中新增了文件系统对象( File System Object 缩写为 FSO)模型,它提供了一整套对文件系统进行管理和操作的方法和属性,包括:获得驱动器的信息,如驱动器列表、盘符、磁盘空间等。获得文件夹的或文件的信息,如名称、创建、修改日期等。检查指定的文件夹或文件是否存在及在什么位置。文件夹或文件的删除、移动、复制等通常操作。对文本文件的读写操作。

Page 32: 第十六章  设计文件应用程序