VisualBasic程序设计第五章的学习与自测

一、本章知识点分析

1.文件的基本概念

文件一般是指存储在外部介质(如磁盘)上的数据的集合。根据数据的性质,可以把文件分成程序文件和数据文件。我们讨论的主要是数据文件,数据文件时存储在外部介质上的相关信息的集合。对文件进行访问操作,其一般流程是:

  1. 打开(创建)文件
  2. 访问文件
  3. 关闭文件

其中:

  • 打开(创建)文件操作是为文件准备一个读写时使用的缓冲区,并声明文件的打开方式,确定“文件号”。这样,在后续的程序中,对打开(创建)文件进行访问,操作时不需要再制定文件名,而是通过“文件号”对打开(创建)文件进行操作。
  • 根据文件的存取方式不同,可将文件分为“顺序文件”、“随机文件”和“二进制文件”。
  • 文件的读取操作是把外部介质上文件中的数据传输到内存中。
  • 文件的写入操作是把内存的数据传输到外部介质上,写入到打开(创建)的文件中。
  • 关闭文件操作是讲文件缓冲区中的所有数据写入文件中,并释放与该文件相关的“文件号”
顺序文件

顺序文件将要保存的数据依次逐个转换成ASCII字符,然后存入磁盘。
顺序文件是最简单的文件结构,它按次序一个接一个的排列纪录,并且只提供第一个记录的存储位置。当需要读取某一记录时,就必须按顺序从第一条记录开始依次读出数据,直到找到所需记录为止。

随机文件
以随机存取方式存取数据的文件。随机文件是可以按照任意顺序读写的文件,它的每条记录都有一个记录号,并且所有记录的长度是相等的。读取数据时,只要指定记录号,就可以直接读取记录。随机文件一旦打开,就可以同时进行读写操作。
随机文件的优点是数据的存取灵活、方便、速度快。主要缺点是占用的空间大、数据组织复杂。 
二进制文件
磁盘中的文件在本质上都是以二进制方式存储的,二进制文件存取方式是以字节为单位对文件进行访问的,允许程序读写文件的任何字节,不管是文本文件、可执行文件,都可以二进制方式存取访问。

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

3.文件系统控件

VB提供了3个文件系统控件,驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)。利用这3个控件进行文件管理十分方便。
(1)驱动器列表框

  • -重要属性—Drive属性 Drive1. Drive = “C:” ‘指定C盘为当前驱动器 ChDrive Drive1.Drive ‘将Drive属性指定的驱动器设置为当前驱动器。
  • -重要事件—Chang事件 当选择一个新的驱动器或通过程序代码改变Drive属性的确定值时,会触发驱动器列表框的Chang事件,驱动器列表框的默认名为Drive1,Chang事件的过程名为Drive1_Chang()

(2)目录列表框

  • -常用属性—Path属性 该属性用于设置或返回当前目录的完整路径。它只能在程序代码中设置,不能在属性窗口中设置。如: Dir1.Path=”C:\Visual Basic\Stu” ‘指定C盘Visual Basic目录下的Stu子目录为当前目录。
  • -重要事件—Chang事件

    在程序运行时,每当改变当前目录,即目录列表框的Path属性值发生变化时,将引发Chang事件,目录列表框Chang事件的过程名为Dir1_Chang()

(3)文件列表框

  • 常用属性—Path属性、Pattem属性、FileName属性
  • 主要事件
    ①PathChange事件
    当FileName和Path属性值改变时,将引发PathChange事件。
    ②Click事件
    在文件列表框中单击文件时发生。
    ③DbClick事件
    在文件列表框中双击文件时发生。
4.驱动器列表框、目录列表框及文件列表框的同步操作

当改变驱动器列表框中的驱动器名后,目录列表框中的目录应当随之变为该驱动器上的目录,下列程序代码可使驱动器列表框和目录列表框产生同步效果。
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
上述事件过程表明,每当改变驱动器列表框的Drive属性时,将产生Change事件,目录列表框中的目录变为该驱动器的目录。
同样可以通过以下事件过程使目录列表框和文件列表框同步。

Private Sub Dri1_Change()
  File1.Path = Dri1.Path
End Sub

上述两个事件过程可使三个列表框产生同步效果。

5.文件的打开

(1)顺序文件的打开

格式:Open <文件名> For <模式> As [#] <文件号>
 其中模式是指文件的打开方式,有三种情况:
  • Input:以读方式打开文件。
  • Output:以写方式打开文件。
  • Append:以追加方式打开文件。

例如:

  • Open “A:\D1.Dat” For Input As #1 ‘以读方式打开A盘中的”D1.Dat”文件
  • Open “A:\D2.Txt” For Output As #2 ‘以写方式打开A盘中的”D2.Txt”文件

(2)随机文件的打开

格式:Open<文件名>For Random As [#]<文件>[Len=记录长度]

(3)二进制文件的打开

格式:Open<文件名>For Binary As [#]<文件>
7.文件的关闭

顺序文件、随机文件和二进制文件的关闭完全相同,其格式为:

Close[[[#]<文件号>],[[#]<文件号>]]

说明:
①Close语句用来关闭文件,它是在打开文件之后进行的操作。格式中的<文件号>是Open语句中使用的文件号。例如用下面的语句打开文件:

Open "A:\D1.Dat"  For Input As #1

则可以用下面的语句关闭该文件:

   Close # 1 

关闭一个数据文件具有两方面的作用,一是把文件缓冲区中的所有数据写到文件中;二是释放与该文件相联系的文件号,以供其它Open语句使用。
②Close语句可以同时关闭多个已打开的文件,如:

  Close  #1#2     '关闭文件号为1和2的两个文件
  Close             '关闭所有已打开的文件
8.文件的写操作

(1)顺序文件的写操作
要向顺序文件中写入内容,应先以Output或Append方式打开文件,然后使用Print#语句或Write#语句向文件中写数据。
①Print#语句
格式为:

Print  # <文件号>,[输出项列表]

其中<文件号>是以写方式打开文件的文件号,[输出项列表]为用逗号或分号分隔的表达式序列,[输出项列表]若缺省,将向文件中写入一个空行。详细说明见教材第129—130页。
例 编写程序把一个文本框中的内容以文本的形式保存在磁盘上。
假定文本框的名称为Text1,文件名为Mytext.dat。程序代码如下:

Open "Mytext.dat" For Output As #1
Print #1, Text1.Text
Close #1
②Write #

Write # <文件号>,[输出项列表]
Write #语句的功能与Print #语句基本相同,主要区别是:

  1. Write #语句在各输出项之间自动插入逗号。
  2. Write #语句为字符串两侧加双引号。
  3. Write #语句在将最后一个字符写入文件后会插入回车换行符,即Chr(13) + Chr(10)。

(2)随机文件的写操作
格式:Put[#]<文件号>,[记录号],<变量名>
(3)二进制文件的写操作
格式:Put #<文件号>,[位置],变量名

9.文件的读操作

(1)顺序文件的读操作
顺序文件的读操作由Input# 、Line Input#或Input函数从文件中读数据
①Input#语句
格式:

Input # <文件号><变量列表>

Input#语句从一个顺序文件中读出数据项,把这些数据项分别赋给指定的变量,变量的类型与文件中数据的类型要对应一致。
②Line Input#语句

Line Input#<文件号><字符串变量>

Line Input#语句从已打开的顺序文件中读出一行,并将其分配给字符串变量。读出的数据中不包含回车及换行符。在文件操作中,Line Input#语句是十分有用的语句,它可以读取顺序文件中一行的全部字符,直至遇到回车符为止。
(2)随机文件的读操作
随机文件的读操作使用Get语句,其格式如下:
格式:

Get[#]<文件号>,[记录号],<变量>

Get语句是从打开的磁盘文件中将一条由记录号指定的记录内容读入记录变量。[记录号]是大于等于1的整数,表示读出的是第几条记录,若缺省,则读出上一次读写操作的记录之后的记录,逗号不能省略。
(3)二进制文件的读操作
二进制文件仍用Get语句来实现读操作,格式如下:

Get #<文件号>,[位置],变量名

二、自测题

(一)单项选择题

1.顺序文件是因为( )。
A.文件中按每条记录的记录号从小到大排序
B.文件中按每条记录的长度从小到大排序
C.文件中按记录的某关键数据项从大到小的顺序
D.记录按进入的先后顺序存放的,读出也是按原写入的先后顺序读出
2.KILL语句在VB语言中的功能是( )。
A.清内存
B.清病毒
C.删除磁盘上的文件
D.清屏幕
3.为了使目录列表框Dir1的内容符合驱动器列表框Drive1的选择,应当( )。
A.在Dir1_Change()事件中加入代码 Dir1.Path = Drive1.Drive
B.在Drive1_Change()事件中加入代码 Dir1.Path = Drive1.Drive
C.在Dir1_Change()事件中加入代码 Drive1.Path = Dir1.Path
D.在Drive1_Change()事件中加入代码Drive1.Path = Dir1.Path
4.要使得文件列表框File1中只显示文件后缀名为bmp和jpg的图片文件,以下语句不正确的是( )。
A.File1.Pattern = “.bmp|.jpg”
B.File1.Pattern = ” 图片文件”
C.File1.Pattern = “.bmp;.jpg”
D.File1.Pattern = “图片文件|.bmp;.jpg”
5.下列不是Visual Basic数据文件的是( )。
A.顺序文件 B.随机文件
C.二进制文件 D.数据库文件

(二)编程题

  1. 编写一程序。要求程序运行后,驱动器列表框Drive1的默认驱动器设置为D盘,选择驱动器的盘符,则在目录列表框中显示该该驱动器下的目录;点击目录列表框中的某一目录,在文件列表框File1中显示该目录下的图片文件(*.jpg);选择File1中所列的图片文件,则相应的图片显示在图片框Picture1中。程序运行结果如图1所示。
    vb编程题
    2.使用顺序文件读写方式编写一个简单的记事本应用程序,其运行界面如图2所示。基本逻辑是:假设在以C盘的根目录下有一个名为F1.txt的文本文件。当点击“打开”按钮(Command1)时,程序将F1.Txt文件中的内容显示在文本框(Text1)中,当点击“新建”按钮(Command2)时,清空Text1中的内容;用户可以在Text1中进行编辑操作,当点击“保存”按钮(Command3)时,将Text1中的内容保存在F1.txt文件中。当点击“退出”按钮(Command4)时关闭本窗体。
    vb编程题

答案:

(一)单项选择题

1.D 2.C 3.B 4.C 5.D

(二)编程题
  1.

提供以下代码,请同学们上机运行调试。

Private Sub Form_Load()
     Drive1.Drive = "D:\"
     File1.Pattern = "*.jpg"
End Sub
Private Sub Drive1_change()
   Dir1.Path = Drive1.Drive
   Text1.Text = Drive1.Drive
End Sub
Private Sub Dir1_Change()
   File1.Path = Dir1.Path
   Text1.Text = Dir1.Path
End Sub
Private Sub File1_click()
  Picture1. Picture = LoadPicture(File1.Path + "\" + File1.FileName)
  FileName = File1.Path + "\" + File1.FileName
  Text1.Text = FileName
End Sub

2.
提供以下代码,请同学们上机运行调试。

Private Sub Command1_Click()
    Dim strtxt As String
    Text1 = ""
    Open "C:\F1.Txt" For Input As #1
    Do While Not EOF
       Input #1, strtxt
     Text1 = Text1 + strtxt
    Loop
  Close #1
End Sub

Private Sub Command2_Click()
    Text1 = ""
End Sub

Private Sub Command3_Click()
    Open "C:\F1.Txt" For Output As #1
    Write #1,  Text1
    Close #1
End Sub

Private Sub Command4_Click()
    Unload Me
End Sub

猜你喜欢

转载自blog.csdn.net/shensiback/article/details/80866008