2011年计算机等级考试二级VB考点及习题(6)
文件处理 顺序文件和随机文件的打开(open)语句,EOF函数,读写语句。
do while not eof(1) do until eof(1)
print #1, write #1,
input #1,a,b,c line input #1,s input(#1,100)
get #1,a put #1,”af”
打开方式:
顺序文件Open "文件路径+文件名(包括文件后缀)" For Output As #1-511
Open "文件路径+文件名(包括文件后缀)" For Append As #1-511
Open "文件路径+文件名(包括文件后缀)"For Input As #1-511
随机文件:Open "文件路径+文件名(包括文件后缀)"For Random As #1-511
二进制文件:Open "文件路径+文件名(包括文件后缀)"For Binary As #1-511
Open语句打开文件的注意:
1.如果以Output、Append、Random、Binary模式打开一个不存在的文件时,VB自动创建一个相应文件;
2.在Input Random Binary模式下,可以用不同的文件号打开同一文件,但Output Append方式不可以;
3.所有当前使用的文件号必须是唯一的;
4.如果以Output模式打开一个已存在的文件,即使没有进行写操作原来数据也将被覆盖。
Close语句注意:(Reset)
1.直接使用 Close语句(缺省文件号),则所有用Open语句打开的活动文件都被关闭;
2.当程序结束时,所有打开的文件自动被关闭。
Lock和Unlock语句注意:
1.对于二进制文件,Lock和Unlock的是字节范围;
2.对于随机文件,Lock和Unlock的是记录范围;
3.对于顺序文件,Lock和Unlock的是整个文件,即使指明范围也不起作用;
4.缺省情况下Lock和Unlock的范围是整个文件;
5.Lock和Unlock总是成对使用。
特别注意:在关闭文件或结束程序之前,必须用Unlock语句对先前锁定的文件解锁,否则会产生难以预料的错误。
试题
1.要对顺序文件进行写操作,下列打开文件语句中正确的是( )。
Open "file1.txt" for output as #1
Open "file1.txt" for input as #1
Open "file1.txt" for Random as #1
Open "file1.txt" for binary as #1
2.在VB中文件访问的类型有( )。
A.顺序、随机、二进制 B.顺序、随机、字符
A. 顺序、十六进制、随机 D.顺序、记录、字符
3.将文件Data1中的无序数据和Data2中的有序数据插入到Data3中,要求:Data3中的数据必须也是排好序。请填写空白处以实现该题功能。
Private Sub Form_Click()
Dim a() As Integer, b() As Integer
Dim k As Integer, i As Integer
Open "e:data1.txt" For Input As #2
Open "e:data2.txt" For Input As #3
Do While Not EOF(2)
k = k + 1
ReDim Preserve a(k)
Input #2, a(k)
Loop
_______k=0______________________
Do While Not EOF(3)
k = k + 1
ReDim Preserve b(k)
Input #3, b(k)
Loop
Call insert(a, b)
Open "e:data3.txt" For Output As #4
_k=ubound(b)____________________________
For i = 1 To k
Print #4, b(i)
Next i
Close
End Sub
Private Sub insert(a() As Integer, b() As Integer)
Dim m As Integer, i As Integer
Dim n As Integer, j As Integer
m = UBound(a): n = UBound(b)
_redim preserve b(m+n)_______________________
i = 0
Do While i < m
i = i + 1
j = n
Do While j >= 1 And a(i) < b(j)
If a(i) < b(j) Then
___b(j+1)=b(j)_______________________
j = j - 1
Else
Exit Do
End If
Loop
__b(j+1)=a(i)___________________________
n = n + 1
Loop
End Sub