slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第七章 文件 PowerPoint Presentation
Download Presentation
第七章 文件

Loading in 2 Seconds...

play fullscreen
1 / 43

第七章 文件 - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

第七章 文件. 第七章 文件. 7.1 文件的基本概念 7.2 顺序文件 7.3 随机文件 7.4 二进制文件 7.5 文件操作语句和函数 7.6 文件控件. 记录. 字段. 字段. 字段. 字段. 字段. 字段. 7.1 文件的基本概念. VB 的文件结构 字符 ( Character ) —— 构成文件的最基本单位。 字段 ( Field ) —— 由若干字符组成的一项数据。 记录 ( Record ) —— 由若干个相互关联的字段 ( 数据项 ) 组成。.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第七章 文件' - altessa


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
第七章 文件

7.1 文件的基本概念

7.2 顺序文件

7.3 随机文件

7.4 二进制文件

7.5 文件操作语句和函数

7.6 文件控件

slide3

记录

字段

字段

字段

字段

字段

字段

7.1 文件的基本概念
  • VB的文件结构

字符(Character)——构成文件的最基本单位。

字段(Field)——由若干字符组成的一项数据。

记录(Record)——由若干个相互关联的字段(数据项)组成。

文件指存储在外部介质上数据的集合。为了有效地存取数据,数据必须以某种特定的方式存储,这种特定的方式称为文件结构。

例如:由学生的学习成绩信息组成的记录:

文件(File)——若干个记录的集合。

slide4
7.1 文件的基本概念
  • VB文件种类
    • 根据文件存储数据的性质分类:程序文件和数据文件
      • 程序文件:可由计算机执行
      • 数据文件:存储普通数据,通过程序来存取和管理
slide5
7.1 文件的基本概念
  • VB文件种类
    • 根据文件的存取方式和结构分类:顺序文件 和 随机文件
  • 顺序文件:
    • 一行一条记录,记录可长可短 ;
    • 顺序文件中的记录按顺序一个接一个存储
    • 对顺序文件进行读写操作时,总是从文件头开始,顺序读写。
slide6
7.1 文件的基本概念
  • 随机文件(直接存取文件)

随机文件是由大小相同的记录组成,每个记录中包含记录号和字段。

对随机文件的读写操作时,给出记录号可以访问文件中与记录号对应的记录。

记录号n

记录号n+1

记录n

记录n+1

slide7
7.1 文件的基本概念
  • VB文件种类
  • 根据文件中数据的编码方式分类:ASCII文件和二进制文件
    • ASCII文件:又称文本文件,它是以ASCII码的方式进行存储的,这种文件可以用字处理软件建立或修改。
    • 二进制文件:二进制文件中的数据均以二进制方式存储,其存取单位是字节,二进制文件不能用一般的字处理软件进行编辑。
slide8
7.1 文件的基本概念
  • 文件的基本操作

打开

或创建

关闭

读/写

文件的读操作是指把文件中的数据传送到内存的操作;

文件写操作是指把内存中的数据存入磁盘文件的操作;

文件打开后都有相应的文件号与之相关,可以看作文件的代表。

将数据写入文件,并释放相关资源。

slide10
格式:Open 文件名 For 打开方式 As [#] 文件号

为文件的输入、输出分配缓冲区,并将文件号与一个文件名连接起来。

7.2 顺序文件

1. 顺序文件的打开

  • 文件名可以是字符串常量,也可以是字符串变量

字符串常量 "c:\VB\Test.txt"

字符串变量 str ="c:\VB\Test.txt"

  • 文件号是介于1~511之间的整数
slide11
7.2 顺序文件
  • 打开方式
    • Output:对文件进行写操作
    • Append:在文件末尾追加记录
    • Input:对文件进行读操作

除Input外,其余打开模式都可对不存在的文件先新建再打开

Open "Test.txt" For Input As #1

Open App.Path + "\Test.txt" For Input As #1

注:App.path:用来返回当前路径

slide12
7.2 顺序文件

2. 顺序文件的关闭

  • 格式:Close [[#]文件号] [, [#]文件号] ...

Close #文件号:关闭对应文件号的文件

Close:关闭所有已打开的文件

打开c:\VB目录下一个文件名为Score.txt的文件,供读数据,指定文件号为# 1

Open "c:\VB\Score.txt" For Input As #1

……

Close #1

Open "Score.txt" For Output As #1

……

Close #1

slide13

分区格式输出

紧凑输出

省略#会怎么样呢?

7.2 顺序文件
  • 3.顺序文件的写操作——Print # 语句

格式:Print #文件号,[[Spc(n)|Tab(n)][表达式表][;|,]]

Open " d:\test.txt" For Output As #1 ‘打开文件供输出

Print #1, "this is a test" ‘输出一行内容

Print #1, ‘输出一个空行

Print #1, "hello", ""; "world"

Print #1, Spc(5); "hello everyone "

Print #1, Tab(10); "hello"

Close #1

Print格式

slide14
顺序文件

例:随机产生一个5×5的二维数组,将该数组的所有元素写入文件test.txt。

Private Sub Form_Click()

Dim a(1 To 5, 1 To 5)

Open “d:\test.txt" For Output As #1

For i = 1 To 5

For j = 1 To 5

a(i, j) = Int(Rnd * 100)

Print Format(a(i, j), "@@@");

Print #1, Format(a(i, j), "@@@");

Next j

Print

Print #1,

Next i

Close #1

End Sub

App.path & “\test.txt”当前路径下的test.txt文件

App.path:用来返回当前路径

Print矩阵

slide15

7.2 顺序文件

顺序文件的追加操作
  • 这种操作适合把写入的数据附加到文件末尾的情况

Open 文件名 For Append As [#] 文件号

例 续前例,再随机生成一个二维数组,

把该数组各元素的值追加到test.txt的后面。

Open “d:\test.txt" For Append As #1

slide16

7.2 顺序文件

Write #1, "One", "Two", 123

Print #1, "One", "Two", 123

3.顺序文件的写操作——Write # 语句

格式:Wirte #文件号, [输出列表]

输出列表:一般指用"," 或" ;"分隔的数值或字符串表达式

Wirte 均以紧凑格式写入信息,并自动添加","

Print语句和Write语句的区别在于:

Write语句以紧凑的格式存放数据,系统自动在各数据项之间加入“,”,字符串加上双引号。而使用Print语句写入数据时,系统不会自动添加分隔符。

slide17
用文件操作语句和函数

1. LOF函数

函数调用格式:LOF(文件号)

LOF函数返回被打开文件的大小。

2. LOC函数

函数调用格式:LOC(文件号)

LOC函数返回被打开文件的当前读写位置

3. EOF函数

函数调用格式:EOF(文件号)

EOF 函数返回被打开文件是否到了文件末尾。返回值为True,表示到达文件末尾;否则返回值为False。

slide18
用文件操作语句和函数

4. FreeFile 函数

FreeFile函数的返回值是一个在程序中没有使用的文件号

5. FileAttr 函数

函数调用格式:FileAttr(文件号,属性)

FileAttr函数的返回值是所打开文件的相关属性。

当属性取值为1,返回文件存取方式的相关代码。

如input方式打开,返回值为1。

6. Lock 函数与Unlock 函数

函数调用格式:

Lock[#]文件号[,记录|[开始] To 结束]

......

Unlock[#]文件号[,记录|[开始] To 结束]

Lock函数与Unlock函数用于对文件的锁定和解锁。

2005 4
真题(2005年4月)

在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,在文本框中输入以下字符串:Microsoft Visual Basic Programming,然后编写如下事件过程:

Private Sub Command1_Click()

 Open "d:\temp\outf.txt" For Output As #1

 For i = 1 To Len(Text1.Text)

 c = Mid(Text1.Text, i, 1)

 If c >= "A" And c <= "Z" Then

 Print #1, LCase(c)

 End If

 Next i

 Close

End Sub

2005 41
真题(2005年4月)

答案:D

程序运行后,单击命令按钮,文件outf.txt中的内容是__

(A)MVBP (B)mvbp (C)M (D)m

V v

B b

P p

slide21

7.2 顺序文件

【例7-1】用Windows自带的“记事本”程序创建一个顺序文件data.dat。该文件内包含若干整型数据,各数据间用空格分开。编写一个程序,找出该文件中的最大值、最小值和平均值,并写入该文件。

  • 3.顺序文件的读操作
  • 格式:Input #文件号, 变量列表
  • 功能:从一个顺序文件中读取出一个或多个数据项,并将读出的数据分别赋给指定的变量。
slide22
7.2 顺序文件

Private Sub Form_Click()

Dim max%, min%, aver!, count%, n%, sum%

count = 1: sum = 0

Open “D:\data.dat" For Input As #1

Input #1, max

min = max

While Not EOF(1) ‘判断被打开的文件是否到了文件末尾

Input #1, n

If n > max Then max = n

If n < min Then min = n

count = count + 1: sum = sum + n

Wend

Close #1

Open "f:\data.dat" For Append As #1

Print #1, "最大值"; max, "最小值"; min, "平均值"; sum / count

Close #1

End Sub

7-1

slide23

7.2 顺序文件

3.顺序文件的读操作

  • 格式:Line Input #文件号, 字符串变量

功能:从文件中读出一行数据,并将读出的数据赋给指定的字符串变量

说明:

①“文件号”同前,“字符串变量”用来保存读出的字符串。

② Line Input # 语句一次只能从文件中读出一个字符串,直到遇到回车符(Chr(13))或回车换行符(Chr(13) + Chr(10))为止。回车或回车换行符将被忽略,不会被加到字符串后。

③Line Input #语句读出的数据通常用Print #语句写入文件。

④用Line Input #语句对文本文件进行操作比较方便。

slide24
7.2 顺序文件

【例7-2】在窗体上分别创建一个文本框对象Text1和一个命令按钮对象Command1,单击命令按钮时,将【例7-1】中的文本文件“d:\7-1\data.dat”的内容一行一行地读入文本框。

slide25
Private Sub Command1_Click( )

dim s as string

Text1.Text = ""

Open "d:\7-1\data.dat " For Input As #1 ‘打开文件

Do While Not EOF(1) ‘文件里的内容未读完时就继续循环

Line Input #1, s

Text1.Text = Text1.Text + s + Chr$(13) + Chr$(10)

‘在文本框种显示结果

Loop

Close #1 ‘关闭文件

End sub

7.2 顺序文件

7-2

slide26
7.2 顺序文件
  • 3.顺序文件的读操作
  • 格式:Input(读取的字符数, #文件号)

功能:调用该函数可以读取指定数目的字符,

包括逗号、回车符、换行符、引号和前导空格等。

说明:除了用于以Input方式打开的顺序文件外,Input$函数还可用于以

Binary方式打开的二进制文件。

【例7-3】编写一个程序,用Input$ 函数从文件中一次读出一个字符并在窗体上显示出来,直到所有的数据都被读出为止。编写如下事件过程:

slide27
7.2 顺序文件

Private Sub Form_Click()

Dim OneChar

Open "Testdata.dat" For Input As #1

Do While Not EOF(1)

OneChar = Input(1, #1)

Print OneChar;

Loop

Close #1

End Sub

7-3

slide28

【例7-5】建立一个成绩查询窗体如图7-7所示。

要求在From_Load时打开磁盘文件test42in.txt读取数据,并将读入的学号和姓名分别添加进两个列表框中,同时将三门课程的考试成绩读入三个数组(每个数组可定义为200个元素);并将两个列表框的ListIndex属性置为0。当点击姓名中任意一项,学号的ListIndex应随之改变,同样点击学号中任意一项,姓名的ListIndex应随之改变。点击“查询”则将该学生的三项成绩显示在右边的三个文本框内,同时将平均成绩置空。点击“计算”则将该学生三项成绩的平均值显示出来。点击“退出”则结束程序。

textyy

Textsx

Textwl

List1

List2

Textave

Command3

Command1

Command2

【例7-5】程序界面

7-5

slide29

记录号n

记录号n+1

字段1

字段2

字段1

字段2

记录n

记录n+1

7.3 随机文件
  • 随机文件是由大小相同的记录组成,每个记录中包含记录号和字段。
  • 随机文件以记录作单位操作,为了完整地定义记录,需要用户自定义类型。因为所有记录长度相同,所以所有字符串字段必须使用定长字符串类型。
  • 对随机文件的读写操作时,给出记录号可以访问文件中与记录号对应的记录。
slide30
随机文件的打开与关闭
  • 1.随机文件的打开
    • 打开随机文件仍然使用Open语句。
    • 格式:Open 文件名For Random As #文件号[Len=记录长度]
    • 功能:以随机文件访问模式打开一个文件,可供读或写操作。
    • 注意:记录的长度默认值为128个字节,可以用Len函数返回用户自定义数据类型的长度。
  • 2.随机文件的关闭
    • 格式:Close [#文件号][,#文件号]…….
    • 随机文件的关闭与顺序文件相同。
slide31
随机文件的读写操作
  • 读操作
    • 格式:Get #文件号,[记录号],变量
    • 功能:从文件中读取指定记录,并存入相应变量中。
    • 说明:
    • ①“文件号”是必须的;
    • ②“记录号”可选,其取值范围为1~231-1,记录号所指示的是需要读出的记录的编号,如果省略了记录号,则读取下一个记录,值得注意的是即使省略记录号,其后的逗号也不能省略;
    • ③“变量名”用来将读出的数据放入其中。
slide32
随机文件的读写操作
  • 写操作
    • 格式:Put # 文件号,[记录号],变量名
    • 功能:将一个记录变量的内容写到指定的记录位置处。
    • 忽略记录号,则表示在当前记录后的位置插入一条记录。变量要与记录类型一致。
slide33
随机文件的读写操作

建立一个随机文件TeacherInfo.dat存取学校教师信息。每个教师的记录包括姓名、年龄、学院和职称。

Private Type Teacher

name As String * 10

age As Integer

college As String * 16

title As String * 10

End Type

‘ 每条记录总长度为38个字节

Random

slide34
随机文件的读写操作

Private TeaRec As Teacher

Private Sub Command1_Click()

Open app.path+“\teaInfor.dat" For Random As #1 Len = Len(TeaRec)

n = LOF(1) / Len(TeaRec)

With TeaRec

.name = Text1(0).Text

.age = Val(Text1(1).Text)

.college = Text1(2).Text

.title = Text1(3).Text

End With

Put #1, n + 1, TeaRec

Close #1

End Sub

slide35
随机文件的读写操作

Private Sub Command2_Click()

Open "f:\teaInfor.dat" For Random As #1 Len = Len(TeaRec)

n = LOF(1) / Len(TeaRec)

For i = 1 To n

Get #1, i, TeaRec

With TeaRec

strs = Format(.name, "@@@@@@@@") _

& Format(.age, "@@@@@") _

& Format(.college, "@@@@@@@@@@") _

& Format(.title, "@@@@@@@@@")

End With

List1.AddItem strs

Next i

Close #1

End Sub

slide36
二进制文件的操作
  • 打开
    • Open "文件名" For Binary As #文件号
  • 写操作
    • Put #文件号, [位置], 变量名
  • 读操作
    • Get #文件号, [位置], 变量名

二进制文件是含有编码信息的文件,编码信息需由创建此文件的应用程序解释,二进制文件只能由创建它的应用程序编辑,一般的文本编辑软件无法打开并处理。二进制存取可以获取任何一个文件的原始字节,任何类型的文件都可以用二进制访问的方式打开。

二进制文件中的内容以字节存取。二进制文件打开后,读和写操作可同时进行。因此,二进制访问能提供对文件的完全控制。

7-7

slide37
7.2 文件控件

在程序设计中,为了方便用户操作,许多应用程序需要显示关于磁盘驱动器、目录和文件的信息。为使用户能够在应用程序运行的过程中使用文件系统,VB6.0提供了两种选择:

①可以使用由CommonDialog控件提供的标准对话框(如打开,另存为等);

②三种文件系统控件:驱动器列表框、目录列表框、文件列表框。

DriverListBox

DirListBox

FileListBox

slide40

Sub drvDrive_Change( )

dirDirectory.Path = drvDrive.Drive

End Sub

Sub dirDirectory_Change( )

filFile.Path = dirDirectory.Path

End Sub

例:文件系统控件的同步操作

当驱动器列表框的驱动器名被改变时,目录列表框的当前目录要随之改变;

随着目录列表框的当前目录改变,

文件列表框里所显示的文件也应同时改变。这种情况称被称为同步操作。

slide41

【例7-8】编写一个图片浏览器。使用一个驱动器列表框、一个目录列表框一个文件列表框、一个组合框和一个图像框。【例7-8】编写一个图片浏览器。使用一个驱动器列表框、一个目录列表框一个文件列表框、一个组合框和一个图像框。

Image

Name:Image1

DriveListBox

Name:Drive1

ComboBox

Name:Combo1

DirListBox

Name: Dir1

FileListBox

Name: File1

slide42

【例7-8】编写一个图片浏览器。使用一个驱动器列表框、一个目录列表框一个文件列表框、一个组合框和一个图像框。【例7-8】编写一个图片浏览器。使用一个驱动器列表框、一个目录列表框一个文件列表框、一个组合框和一个图像框。

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()

Dir1.Path = Drive1.Drive

End Sub

Private Sub File1_Click()

If Right(Dir1.Path, 1) <> "\" Then

Image1.Picture = LoadPicture(File1.Path + “\” +

File1.FileName)’Picture属性设置控件中要显示的图片。

’通过LoadPicture函数设置

Else

Image1.Picture = LoadPicture (File1.Path + File1.FileName)

End If

End Sub

www themegallery com

Thank You !

www.themegallery.com