; D% M; V4 y+ k, c5 g. zIO操作基本上需要用到Stream相关的子类,因此这类问题在CSDN问得也是比较多。其实对于Stream来说,操作起来比较简单,只要对细节的处理稍微注意一下,相信在使用它的时候也会得心应手。9 m3 d# E3 z& {0 }' d
- K" u# p. ~5 X# T) @
对于Stream相关的问题,大致分如下几类。* \& L6 f. M6 e
( e2 y8 w/ ?- D: Z* z问题一,基本操作的问题;+ d4 U& T* ~' D
) n, V) ~5 Y' l9 ?( y! I& R1 L问题二,编码的问题;2 s$ P8 E( p: ?& N# V. R6 V
- G* K% J0 {; e
问题三,尾部处理问题;% { ^- a8 ~% j, z: Z
5 ~. p# E- \& L- d' L" V问题四,Stream缓存问题; " U( r6 u0 z/ T- C1 N; [5 d 7 r. r/ _3 M. k' w问题五,资源释放问题;# h+ X/ x$ F! w; k9 A. O* E
$ n7 p& o# E9 H
最后一个问题,说说如何使用Stream来更新大文件部分数据。 t( q& e7 V8 O6 [9 l1 n: h ~/ ~- a. Y w& ^. i
对于问题一,基本操作的问题,主要是读写问题,主要是出现在文件数据比较大,需要循环写或者读的时候。此时正确读的形式如下。 0 J9 r: s. J4 M; t2 p8 q& t9 u! ^" q! r k5 l+ ~# |
// Open a file to read4 c' A* {+ o% z \6 r8 Q
( P+ X) u! h; _' G+ ~1 {) D3 _
using( FileStream fs = new FileStream( yourFile,2 o3 ~. E" @2 F( u2 R# q
1 U. t& V/ o' ~& m" P FileMode.Open, FileAccess.Read, ; X y6 q' ^/ j8 i5 R& F" q; Y2 z a" U
FileShare.None ) ) 2 o. B8 k' s- s' r! M: W) K; w ! p" E: G. w9 A5 M5 W { 2 o3 T8 g$ @* m8 I8 {6 s& ? 1 E% `- d0 n& O6 c int nRealRead = 0; ) W( N! C) U9 n8 X7 i8 { 3 V: |' m* G! k9 E+ ~5 i! V1 w byte[] bBuffer = new byte[1024];4 p @- O7 b. @# `/ H
3 C; a, n3 X4 v4 U2 ]
do ( F' u, [/ C2 m( r: U $ m; ^& _. b2 f e' o) l7 d5 g: v, [4 {" A' p { # |0 F' G. g+ K; H( p6 ]. y# O 2 L' Z; ?/ s7 N9 Y3 H // Read data0 H: X Y: P5 g