标题: [转]c# Stream的问题 [打印本页] 作者: Star 时间: 2011-2-18 11:06 标题: [转]c# Stream的问题 转自:http://dev.csdn.net/author/Knigh ... 2e82863cbddb78.html 7 T# P( p8 f% T4 K; D. m; t6 E! N0 t% k1 Z # f& L! B/ n& f6 NIO操作基本上需要用到Stream相关的子类,因此这类问题在CSDN问得也是比较多。其实对于Stream来说,操作起来比较简单,只要对细节的处理稍微注意一下,相信在使用它的时候也会得心应手。 ) w1 Z7 T/ p- o* B; C' J; U4 {5 p! E7 [) l" m# d( N- r; D9 |
对于Stream相关的问题,大致分如下几类。 2 Y$ k( g7 \" }4 B5 C6 C 2 z" k. n5 O/ ]+ c. O8 N$ j问题一,基本操作的问题; M' y7 N5 G0 b8 H. H2 [& @! U3 Z1 D, E0 k Q
问题二,编码的问题;3 _; C! W: L8 [8 g" s' W) F
1 U" O; [& b2 r0 w问题三,尾部处理问题;" F# ]6 g/ Q/ s! a" b e
$ `+ B. u6 m6 g& H+ Z# n, a
问题四,Stream缓存问题; . \0 e1 p- I4 w / A W/ E) U9 X# V3 C3 U! ~问题五,资源释放问题;9 B) w- Q5 e7 s$ D5 z- H
3 h' V( @& x; x L/ y
最后一个问题,说说如何使用Stream来更新大文件部分数据。 z3 v" g" _ N# i) L
5 L) |- o* y# Z" I
对于问题一,基本操作的问题,主要是读写问题,主要是出现在文件数据比较大,需要循环写或者读的时候。此时正确读的形式如下。 * @* ?/ {4 R" T' i1 @& b ) C8 F2 d" J' c' i* S" } // Open a file to read : o3 s) t1 v- J' r : `; x- L: N: f3 t/ I' f# g6 U- t using( FileStream fs = new FileStream( yourFile,4 \2 D! ]9 h+ p n$ D* C
) V L2 k$ U/ i# N! |% C FileMode.Open, FileAccess.Read, / i& `: G+ U# l; k3 @2 ~( W' I+ R, h3 ~- `0 q2 x2 z$ o
FileShare.None ) )2 @1 J s! n' ]' ~: v
! a& s J. m b) s
{ 0 C5 i5 }2 l1 F6 t1 G) j: V; u$ j/ w. e r& Z
int nRealRead = 0; % Y! z' o4 U* x } / o; {/ ~# a" k& ~ f3 m) Y x" b byte[] bBuffer = new byte[1024];* M: b, M3 y- d& Z# I
/ w0 W9 R4 D2 H% u! e/ I do & P0 M) w7 Z2 P; r- t1 g! v* @ 1 S# u4 K8 j R2 N {: W. x) W7 L' ?& M% @