第七部分文件操作
选择:
1.关于顺序文件的描述,下面正确的是________。
A) 每条记录的长度必须相同(随机文件)
B) 可通过编程对文件中的某条记录方便地修改(不可以方便修改,方便修改是随机型访问文件)
C) 数据只能以ASCII码形式存放在文件中,所以可通过文本编辑软件显示
D) 文件的组织结构复杂(文件组织结构简单)
见课本272页,在VB中,可以访问3种类型文件,即顺序文件、随机文件、二进制文件。顺序文件适用于读写在连续块中的文本文件,它是一种普通的文本类型文件,其结构比较简单,记录的逻辑顺序与存储顺序相一致,对文件的读写操作只能按记录的顺序进行。由于它的存储方式是按写入顺序存储,即一个数据接着一个数据顺序地排列,先“写入”的数据放在最前面,也将最早被“读出”。打开文件后只提供第一个记录的存储位置。要查找一个数据时,必须从第一条记录一条条读取,直到找到被查的记录为止。因此,顺序文件无法灵活地存取数据,查找和修改数据非常不便,它只适用于有规律、不经常修改的数据。它的优点是所占空间少,容易使用。
随机文件:适用于读写有固定长度记录结构的文本文件或者二进制文件;随机型访问文件中的一行数据称为一条记录,每个启示包含一个或多个字段。具有一个字段的记录对应于任一标准类型。随机文件对文件的读写顺序没有限制,可以随意读写某一条记录。因此记录要求记录的长度是固定的。
二进制文件:适用于读写任意有结构的文件。二制模式访问文件是以字节为单位的,而随机文件是以记录为一个单位。二进制允许用户读写文件的任何字节。二进制文件指的是二进制存取访问方式,不管是文本文件还是可执行文件,只要是以二进制访问方式打开,就可以认为它是二进制文件。在二进制文件中,可以把文件指针移到文件的任何地方。二进制文件刚刚被打开时,文件指针指向第一个字节,以后将随着程序中文件操作命令的执行而移动。2.以下能判断是否到达文件尾的函数是_______。
A)BOF B)LOC C)LOF D)EOF
见课本288页:EOF()测试指针是否到了文件尾;BOF()为数据库中测试是否为文件函数;LOC()返回由“文件号”指定的文件的当前读写的位置。LOF()读文件时该函数返回某个文件的大小(字节数),如果其值为0,表示被测试的文件是一个空文件。
3.按文件的访问方式,文件分为________。
A) 顺序文件、随机文件和二进制文件B) ASCII文件和二进制文件
C) 程序文件、随机文件和数据文件D) 磁盘文件和打印文件
具体解释见第一题
4.顺序文件之所以称之为顺序文件是因为________。
A) 文件中按每条记录的记录号从小到大排序好的
B) 文件中按每条记录的长度从小到大排序好的
C) 文件中按记录的某关键数据项从小到大排序好的
D) 记录按进入的先后顺序存放的,读出也是按原写入的先后顺序读出
具体解释见第一题
5.在窗体上有一个文本框,代码窗口中有如下代码,则下述有关该段程序代码所实现的功能的说法,正确的是______。
Private Sub form_load()
Open "C:\data.txt" For Output As #3
Text1.Text = ""
End Sub
Private Sub text1_keypress(keyAscii As Integer)
If keyAscii = 13 Then
If UCase(Text1.Text) = "END" Then
Close #3
End
Else
Write #3, Text1.Text
Text1.Text = ""
End If
End If
End Sub
A)在C盘当前目录下建立一个文件
B)打开文件并输入文件的记录
C)打开顺序文件并从文本框中读取文件的记录,若输入End则结束读操作
D)在文本框中输入的内容按回车键存入,然后文本框内容被清除
6.文件号最大可取的值为________。
A) 255 B) 511 C ) 512 D) 256
见课本273页,这里主要考查的是顺序文件的打开,其基本格式为:
Open 文件名For Input | Output| Append AS[#] 文件名[Len=记录长度]
这里文件号#用来标识打开文件的数字号,它的取值范围是1~511之间的整数。打开文件后,通过记录号对文件进行操作,一个文件号只能给一个文件标识,除非关闭了该文件,此文件号才能被其他打开的文件使用。
7. Print #1, STR$ 中的Print 是________。
A) 文件的写语句B) 在窗体上显示的方法
C) 子程序名D) 文件的读语句
见课本274页,顺序文件的写操作
8. 以下关于文件的叙述中,错误的是______。
A)使用Append方式打开文件时,文件指针被定位于文件尾
B)当以输入方式(Input)打开文件时,如果文件不存在,则建立一个新文件(此时为出错信息,为output时,如果不存在,才会建立一个新文件)
C)顺序文件各记录的长度可以不同
D)随机文件打开后,既可以进行读操作,也可以进行写操作
9. 要从磁盘上读入一个文件名为“c:\t1.txt”的顺序文件,下列________是正确的语句。
A) F = “c:\t1.txt”
Open F For Input As #2
B) F = “c:\t1.txt”
Open“F” For Input As #2 已把文件名赋值给了变量F,因此不能加引号
C) Open c:\t1.txt For Input As #2 文件路径加引号
D) Open “c:\t1.txt” For Output As #2 读文件不是写
10.要从磁盘上新建一个文件名为“c:\t1.txt”的顺序文件,下列________是正确的语句。
A) F = “c:\t1.txt”
Open F For Input As #2 应为output
B) F = “c:\t1.txt”
Open “F” For Output As #2 理由如第9题
C) Open c:\t1.txt For Output As #2 理由如第9题
D) Open “c:\t1.txt” For Output As #2
11. 如果在C盘当前文件夹下已存在名为StuData.dat的顺序文件,那么执行语句“Open"C:StuData.dat"For Append As #1”之后将______。
A)删除文件中原有的内容
B)保留文件中原有的内容,可在文件尾添加新内容
C)保留文件中原有内容,在文件头开始添加新内容
D)以上均不对
见课本273页,Append解释
Open 文件名For Input | Output| Append AS[#] 文件名[Len=记录长度]
其中input output append 三者只能选其一;
Input进行读操作,将磁盘上的文件存入内存,此时open后的文件名必须存在,文件指针指向第一条记录,如果文件名未找到,会产生错误信息;
Output,对文件写进行写操作,即将内存中的数据以open后的文件名存入磁盘。
Append向打开的文件的尾部添加数据,即将数据追加到文件末尾。
12.以下关于文件的叙述中,错误的是______。
A)使用Append方式打开文件时,文件指针被定位于文件尾
B)当以输入方式(Input)打开文件时,如果文件不存在,则建立一个新文件
C)顺序文件各记录的长度可以不同
D)随机文件打开后,既可以进行读操作,也可以进行写操作
具体解释见11、8题
13. 以下程序段实现的功能是______。
Option Explicit
Sub appeS_file1()
Dim StringA As String, X As Single
String A="Appends a new number:"
X=-85
Open "d:\S_file1.dat" For Append As #1 ‘打开文件并在尾部追加记录
Print #1, StringA; X ‘把StringA X的值打印到文件尾部,同一行打印
Close
End Sub
A)建立文件并输入字段B)打开文件并输出数据
C)打开顺序文件并追加记录D)打开随机文件并写入记录
14. 在窗体上画一个名称为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) ‘len()为获取字符串长度函数,获取text1中字符串的长度
c = Mid(Text1.Text, i, 1) ‘Mid()函数为截取字符串函数,这是从text1.text第I 位置
截取一个字符
If c >= "A" And c <= "Z" Then
Print #1, LCase(C)‘将转换成小写的字符写入到打开的文件中,因为无分号,所以
为换行打印
End If
Next i
Close
End Sub
程序运行后,单击命令按狃,文件outf.txt中的内容是______。
A)MVBP B)mvbp
C)M D)m
V v
B b
P p
15. 下面的程序运行后,将产生______的结果。6
Private Sub Form_load()
Dim Str As String, Anum As Integer
Open "D:\Myfile.dat" For Output As #1 ‘写文件
str1 = "ABCDEFG"
str2 = 12345
Print #1, Str, Anum ‘无分号和逗号,换行
Write #1, Str, Anum
Close #1
End Sub
A.建立一个"D:\Myfile.dat"的文本文件
B.建立一个"D:\Myfile.dat"的文本文件,并写入一行数据,还在窗体上显示一行数据
C.建立一个"D:\Myfile.dat"的文本文件,并写入两行数据√
D.打开一个"D:\Myfile.dat"的文本文件,并读出两行数据
16.下列程序运行后,其结果为______。5
Private Sub Form_Click ( )
Filename=“c:\testfile.txt”
Open filename For Output As #1 ‘写文件
Print #1,“ABCD我是一个学生”
Close #1
Open filename For Input As #1
MsgBox Input(8,1)
Close #1
End Sub
A.在通用对话框中显示“ABCD我是一个”
B.在通用对话框中显示“ABCD我是”
C.在窗体中显示“ABCD我是一个”
D.在窗体中显示“ABCD我是”
这个题目在群里讲过了
答案:
填空:
编程统计D:\data.txt中字符“$”出现的次数。并将统计结果写入到文本文件D:\ res.txt中。Private Sub Form_Click()
Dim Inputdata As String, Count As Integer
Open "D:\data.txt" For 1 As #1
Do While 2
Inputdata = Input(1, #1)
3
Count = Count + 1
End if
Loop
Close #1
Open "D:\res.txt" For 4 As #1
5
Close #1
End Sub
答案:
1.Input
2.Not EOF(1)
3.If Inputdata = “$”then
4.Output
5.Print #1,Count