2012年计算机考试二级VB考点及习题(6)( m$ ?1 f% w5 r M a2 v, @
§7、文件管理控件5 Y; X0 U3 D8 A4 B5 I
文件处理 顺序文件和随机文件的打开(open)语句,EOF函数,读写语句。
' s+ n% j0 P1 p do while not eof(1) do until eof(1)
9 M6 k! i: E7 B* o5 Q print #1, write #1,9 b- _+ X4 H0 {. d
input #1,a,b,c line input #1,s input(#1,100)
* `0 N2 x3 W0 W5 b! }( F: a get #1,a put #1,”af”
F% u! V1 s# ~ ] 打开方式:1 g" D8 y7 E5 }- m
顺序文件Open "文件路径+文件名(包括文件后缀)" For Output As #1-511% Y! K, M4 E+ q- c
Open "文件路径+文件名(包括文件后缀)" For Append As #1-511
- i1 K3 T$ @0 ]0 w9 _ Open "文件路径+文件名(包括文件后缀)"For Input As #1-5119 U& n Z+ x R; @4 u2 l
随机文件:Open "文件路径+文件名(包括文件后缀)"For Random As #1-511
! ?+ N9 u2 T: Z; L1 b- V 二进制文件:Open "文件路径+文件名(包括文件后缀)"For Binary As #1-5117 N( ?: q, A) p k: U) r' d
Open语句打开文件的注意:' |6 ~: f1 E4 K9 X
1.如果以Output、Append、Random、Binary模式打开一个不存在的文件时,VB自动创建一个相应文件;7 J7 P7 I: p h5 K1 [0 Y$ N. |
2.在Input Random Binary模式下,可以用不同的文件号打开同一文件,但Output Append方式不可以;. O2 x3 s8 Z3 U$ Z" l, f$ `& W
3.所有当前使用的文件号必须是唯一的;
" d8 s$ I, U7 M4 G2 b) K- _: H, W 4.如果以Output模式打开一个已存在的文件,即使没有进行写操作原来数据也将被覆盖。) Y3 @7 ]# s7 p/ O* @
Close语句注意:(Reset)/ d# H9 f0 R5 O4 A8 a9 R
1.直接使用 Close语句(缺省文件号),则所有用Open语句打开的活动文件都被关闭;
# E. M2 @5 S( A6 f& {0 X 2.当程序结束时,所有打开的文件自动被关闭。
( Z5 z; j c, r( H Lock和Unlock语句注意:/ }3 i; Y1 K8 {( L% s
1.对于二进制文件,Lock和Unlock的是字节范围;8 m& b" s0 w$ P
2.对于随机文件,Lock和Unlock的是记录范围;
( u' j6 U% | R9 N: Y& P 3.对于顺序文件,Lock和Unlock的是整个文件,即使指明范围也不起作用;
- x3 u% y$ g& `$ J: p 4.缺省情况下Lock和Unlock的范围是整个文件;$ a) q9 H' x+ Y+ ^% x. `8 W% O
5.Lock和Unlock总是成对使用。. P5 J. `4 }6 i% }
特别注意:在关闭文件或结束程序之前,必须用Unlock语句对先前锁定的文件解锁,否则会产生难以预料的错误。. E. s0 X7 b. f0 {# I
1.要对顺序文件进行写操作,下列打开文件语句中正确的是( )。3 ^) \9 A$ t+ O5 F; d. G; U9 [
Open "file1.txt" for output as #12 F6 \; n" {/ I& B
Open "file1.txt" for input as #11 y) _/ o) m, g) f
Open "file1.txt" for Random as #1. h& U3 d; h) v9 z7 ~9 c
Open "file1.txt" for binary as #1; t9 B5 v0 n- h7 a+ _0 b. Z8 Z. r, T
2.在VB中文件访问的类型有( )。
- l0 y, h$ ^* }; U. M0 n A.顺序、随机、二进制 B.顺序、随机、字符
% t- P& G1 a+ @4 X* ?) |+ u8 b A. 顺序、十六进制、随机 D.顺序、记录、字符, w) x1 v" H, M
例如:将文件Data1中的无序数据和Data2中的有序数据插入到Data3中,要求:Data3中的数据必须也是排好序。请填写空白处以实现该题功能。
; S7 v% {: C* {& x Private Sub Form_Click()4 J7 J' N# @1 ?( H2 h" j
Dim a() As Integer, b() As Integer
* P* O7 H* d: N1 ?& ?5 V1 I6 R; M Dim k As Integer, i As Integer+ w1 R, M/ ]# E% P0 I% \% U/ o( X
Open "e:\data1.txt" For Input As #25 e& S: g7 ]& K8 \1 Y# `
Open "e:\data2.txt" For Input As #3
! g# k, d+ K; V* ?5 y Do While Not EOF(2)7 s+ p) `0 H& p8 @# a) M! B
k = k + 12 E. w- ^3 Y3 M1 C) t3 I5 l
ReDim Preserve a(k)
3 p5 B. I' y1 _! b Input #2, a(k)
8 r$ r! |! I& A; @- j- w6 v4 Q Loop
: n; D% u8 i! @8 z. r: I9 X _______k=0______________________
* x" j. f) C. C/ }3 A! I% j' O Do While Not EOF(3)* ^1 [' |$ a1 v" M4 E' a
k = k + 1* w @8 V5 H4 |/ B, [; {6 {5 q1 f
ReDim Preserve b(k)6 H1 O9 y9 U0 A# s# d: Y8 b5 E
Input #3, b(k)
- J: Y7 b0 r- | Loop; W4 V! V1 y' ^4 y O0 N/ e
Call insert(a, b)
4 r7 w/ t4 S; j" ~ Open "e:\data3.txt" For Output As #4
! V0 W( K1 K/ O; D3 | _k=ubound(b)____________________________$ g( j& r4 `7 F/ s; R
For i = 1 To k
6 }) h2 J" @+ a9 S; Z( I- g; Z Print #4, b(i); \ q, l- }' h5 u# [
Next i: j5 o6 h$ C: F# c& [
Close
4 T- z! ?3 g5 q9 W End Sub
4 H! l8 Z' r& e0 j3 V8 R* e u' h; O Private Sub insert(a() As Integer, b() As Integer)
o, c' j" v Y. y Dim m As Integer, i As Integer
5 N0 \' T( [+ c! s0 K N Dim n As Integer, j As Integer! z" }, U# c( N8 n% x) M5 X
m = UBound(a): n = UBound(b); L& P6 r# H" z7 G& k
_redim preserve b(m+n)_______________________
/ K7 k! H8 f* M, J& S2 U i = 02 P9 ~4 L# K6 T) J" K5 D
Do While i < m4 ?2 I0 X( u% `' W/ t6 J
i = i + 1
) H, N9 F7 [! y) J j = n
5 w0 [* U* L n. ~8 e" V Do While j >= 1 And a(i) < b(j)
! I7 ?, ]3 j& u" R4 z If a(i) < b(j) Then
; f7 m. {5 N/ f4 m. _- Q ___b(j+1)=b(j)_______________________
7 e9 H' T5 I' z2 _8 Q p, p6 l. K j = j - 1
7 n' h$ D- ~) z( @9 L Else
; i# K2 @$ @3 K4 a8 b& P Exit Do
4 w7 V; n# f$ n; V, V& O End If2 B4 N/ m$ w; B$ o: e/ ^
Loop
5 o7 Q7 V6 L) Z __b(j+1)=a(i)___________________________& U. M: ~6 l4 }$ K- o3 c1 X" _2 i
n = n + 1
4 j3 \* ^% V5 W! Q" T9 |# w N Loop5 x( _( u$ E; q; s* `( x) G
End Sub |