! P6 \2 i9 c G. g7 }- A/ ~2 E* w1 Q( B
15.考虑如下脚本。运行时,尽管文件test.txt已经被用unlink()函数删除,脚本仍然输出1,1。在脚本的最后添加什么函数才能解决这个问题?
<?php
$f = fopen ("test.txt", "w");
fwrite ($f, "test");
fclose ($f);
echo (int) file_exists("test.txt") . ', ';
unlink ("c:\\test.txt");
echo (int) file_exists ("test.txt");
?>
复制代码
A.clearstatcache()2 @: V- B: `, S/ w1 t
B.fflush()' a' X# }* B; u7 x% H
C.ob_flush()/ z: T6 R" Y( |* q- B9 O
D.touch() 8 b* a9 c/ i# t) k% J1 tE.以上都不对3 w9 l. {0 V0 T* |" {
5 Y, H3 |) Y( l4 l% E / i. f% w8 r/ M" m4 w; s16.函数______能判断一个文件是否可写。 3 h P; b, s4 I) L2 Z: I. g. ~- t, U" ~+ O- z
答案:____________ 0 j# n" M; k& B4 v$ M) u8 u: R) L+ m$ v4 G
[6 D8 ~+ u1 j7 W% D5 Z% c5 e, U
17.以下哪个选项能将文件指针移到开头?3 d4 c" V# N: C: C' r9 @* c
. |; b; ?* ^4 I- }1 y( ~A.reset() ) D) w- r0 o T) m7 Y2 j+ ^! I# XB.fseek(-1)- u# u. R4 p4 d8 c: u. \
C.fseek(0, SEEK_END)5 P/ d/ v, h5 R% M4 n0 n" N
D.fseek(0, SEEK_SET)7 g+ `. t" c9 M5 ?: P
E.fseek(0, SEEK_CUR)9 M% t2 p& I" V+ q$ c3 g4 C
! Y4 G8 H# k6 _8 {) t5 [$ f/ S7 t# z, Z, U* M! W) W. e' O: b
18.stat()和fstat()有什么区别? + w% B, X( N8 \' s* f% g 6 Z- q+ `% k( P3 J/ [A.stat()基于文件指针工作,fstat()基于路径工作 + l/ V: L' E4 KB.fstat()基于文件指针工作,stat()基于路径工作 " c. d- C5 T& Y+ A9 ^% bC.fstat()不能处理文件) }0 u: H; H( ]. l1 y8 E2 P' h
D.stat()不能处理文件 ) h/ r. p q0 ?& J( a5 [# L4 @E.fstat()是stat()的别名) @0 i! _" f, z7 e; }
A.计算Windows系统C盘的剩余磁盘空间大小3 o3 A7 @9 _% M2 u% K' x0 c% U# V
B.输出一个表示C盘剩余空间所占比例的两位小数. s# A6 m5 [: W8 a: m! f7 u+ I3 q
C.输出C盘剩余容量的byte数1 M6 v$ {: C7 G. P" m
D.计算C盘总容量与剩余空间的比率 2 b' p; X' ~' Z- `; N; n7 VE.以上都不对 7 M! L6 u2 Y4 p# u) s! n" o4 C ) V# v9 q) I6 j; P% m; { : w4 B4 J S+ C) I4 P" j2 S20.假设image.jpg存在并能够被PHP读取,调用以下脚本时,浏览器上显示什么?
<?php
header ("Content-type: image/jpeg");
?>
<?php
readfile ("image.jpg");
?>
复制代码
A.一张JPEG图片9 s3 T! K" o" S$ h R
B.一个二进制文件 # _* u4 k) \2 w9 iC.下载一个二进制文件 ' x. L/ c0 C- ?2 T3 I- yD.下载一张JPEG图片& m6 Y' n0 x8 Z& S' B4 J4 V- N$ i
E.一张残破的图片' K# I4 G0 v" j- L
d& }8 g. a7 N3 r
/ _! a% n% _$ d
) [7 p& k) X- L% g0 `9 y/ {$ i答案速查: 9 Q6 p+ L4 O) h: u5 z. |1:D$ F8 c5 o; Y0 ?# B2 {
2:fclose()' X" j+ J! P- ~! H0 ]
3:D * D7 q" O7 M! G5 y4:D6 M% F. w% {4 I9 b
5:AD; |; b% p, t6 a
6:C8 D& M o3 M9 s* k- ], M4 l
7:E 8 P2 N8 e1 a& w: Z, j8:E & R8 l7 Y, F6 K- _* z, `9 P# }9:C* \0 K( d/ E8 c$ y& n
10:A: O( l- N4 _' m
11:BD & D# W i) n0 _ l4 _( J12:fopen()! W: ^' d+ J! ]. _
13:BDE9 [9 g- S# Z) | d
14:fwrite(), fputs()3 N# V, n/ I* W/ c7 R7 y! c
15:A E3 V' m" n( I" i, j, w" l2 s; q8 b
16:is_writeable() / C% ^2 ~/ w2 z) L, C0 R v17:D - `' E7 a- G z8 `2 K* n% H; n18:B/ N- x. H9 P* a. ^6 N" I
19:B 5 q; x8 r# c0 `, E0 X! D9 H- z/ ]7 }20:E 5 s1 Y8 U3 R7 r" B " ^) x4 r% M/ W Z9 j ( I3 N- e9 H2 I" `/ m+ i8 E4 S / X6 D# y7 W" m, S; T. k答案详解1 D8 _; N2 Z& I/ E3 k3 b" H/ Z
/ O H P" b! |9 Z8 S
1.fgets函数主要用来从文本文件中读取一行,当然你也可以指定每次读取的最大长度。fread函数主要用来读取二进制数据。答案是D。 " `) h; `# p( A9 Q2 V. g% I * n" ^( ~% ^; l( v( N; O1 ~2.函数fclose能关闭文件指针。" z5 l! ?. Q6 R$ ~
; j+ \/ L' M" Q( o, x- B0 f: `) }
3.fgets函数能从文件中读取单独一行。因此答案是D。 & ?+ H! C8 W7 [5 t ) S" ^# `" }4 r4 d# ~6 Z4.正确答案是D。这题很难,而且在实践中不大可能会碰到这样的问题——但这不正是你读这本书的原因吗?!你必须记住,flock()使用一种“协议”锁定机制,即所有其他访问此文件的进程也必须要使用flock()。如果某个进程没有这么做,竞争就会产生,锁就不安全。用mkdir创建一个文件夹能保证任何时刻只有一个进程处理能处理某文件,即保证操作的原子性。因此,你可以创建一个临时文件夹并“护”住它,直到I/O操作完成。9 d( k+ }8 \: H" `- |- H J5 x
- E# Q0 c$ T4 l8 ?2 ?5.只有file_get_contents和file函数返回文件的全部内容,因此答案是A和D。readfile函数也能读取文件的全部内容,但它直接把内容送入了输出缓存,因此不能用在表达式中。% e) s( E) Y5 q
; i& M* @1 E( [
6.fscanf函数能根据指定格式解析文件内容,因此答案是C。sscanf函数只能用来操作字符串。& W4 ^" t9 J( h1 Q% F
) t9 h6 v1 }$ n+ P$ k# ]
7.答案是E。注意,文件被以r模式打开,即只读模式。因此,如果文件不存在,PHP将输出一个错误来指出没有找到文件。如果文件存在,fopen()将被成功调用,但由于是以只读方式打开,fwrite()会失败。如果我们用w代替r,脚本就能正常运行,并且myfile.txt内将有50个随机字符(记住,可以像访问数组那样使用索引来访问字符串)。2 ~# z% f I7 Q# ?
- c1 L2 y3 w4 B! J2 t
8.答案是E。PHP里没有叫delete()的函数。删除文件用unlink(),删除文件夹用rmdir(),数据库记录用SQL语句删除,释放变量用unset()。5 ?; I9 G! x5 J. j% c$ }0 J [
) I) I, z& |1 Q1 s7 \
9.脚本实现的功能与file_put_contents()最接近,但这个函数直到PHP5才被引入,因此答案是C。1 K. v" [# ~$ {6 R. m
, C9 q1 S0 m- j' L2 c
10.PHP4.3.0开始,php.ini引入了auto_detect_line_endings设置,系统在保存文本文件时能够自动侦测行结束符号的类型,因此答案是A。 / p3 b1 j: v4 Z# q& w5 X ! Q9 H9 w2 F1 G5 [# H11.要可读可写的打开文件,你必须使用r+模式,因此答案是B和D。 N8 W) r; ~2 ~- k" V! M7 R$ q6 X1 o1 ^. ]2 U l. B" l
12.这是在说fopen()函数。! m/ h+ T* t9 i# l
' ^" a+ `1 i% F13.正确答案是B,D和E。file,readfile和file_get_contents都能读取文件的全部内容。; `% w6 g2 o' u, O( G
) O/ b6 i, m; m, S7 s, r3 z, @
14.fwrite()和fputs()两个函数在这里都可以,而后者其实是前者的别名。在PHP中,写入二进制数据和写入字符串没有区别。 ! X7 y% {4 q: H0 F2 l. t6 D* F4 l8 d. D; s; a! o
15.PHP会缓存某些文件系统函数的返回值——包括file_exists(),这样能提高脚本处理重复操作时的效率。当脚本里有大量删除文件的操作时,缓存很容易就会过时,因此需要清理缓存。答案是A。 - K& p2 e0 c/ G% U1 J j4 }8 y O% w0 `8 |' C
16.这是在说is_writeable函数,它返回一个表示文件是否可写的布尔值。& d. @/ J: z3 Z; W- g" O, o
1 F# ?. a6 t8 U& ?1 `! |17.正确答案是D。fseek()用来移动文件指针。SEEK_SET指出偏移量从文件开头开始计算。如果没有特别指出,SEEK_SET就是fseek()的默认模式。注意,rewind函数等效于fseek(0,SEEK_SET)。 : n4 ^( g' t% T3 f- t2 z% T7 d* d8 _" E- L- K! C( w, o3 Q5 U7 c
18.答案是B。fstat函数通过已打开的文件指针取得文件信息,stat()获取指定路径的文件信息。 7 K, J7 s4 \2 Q& c# c$ K / Y& A4 c t4 R( G4 T19.正确答案是B。disk_free_space函数能确定指定设备上(本题中即Windows下的C盘)的剩余磁盘空间(单位是byte),而disk_total_space()能确定设备的总容量。两者相除,再乘以百分率,最后用number_format()保留两位小数,脚本输出的就是剩余磁盘空间所占的比例。最后在加上百分号以防混淆。/ {2 Z. g, e. j5 L8 W9 D, l