错误一:Stream Read 误区

最近发现许多小问题 使得我们头昏眼花。。在此进行记录!

 想必大家都用过流(Stream)

我就只说一下它的Read()方法。。

 一般我们从一个URL获得这个地址所返回的内容时。就会用到HttpWebResponse

例如:

Code

 

 这个是一个 返回彩信信息的 Stream

 而当我们读取它的时候 一般也会采用下面的方法。(注:只针对读取流!)

 

1  List<byte> list = new List<byte>();
2 int read = 1024;
3while (read > 0)
4{
5      byte[] d = new byte[read];
6       read = sIn.Read(d, 0, read);
7       list.AddRange(d);
8 }

这个sIn.Read所返回的含义为:

读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。  标示所读取的字节数

怎么看好像都察觉不出问题。。。但读取数据一看 。。这个list 里面竟然莫名其妙多出许多0出来!!

这就说明我在  new byte[read] 这 和 read = sIn.Read(d,0,read) 有了冲突!

所以我加以改动做出了 如下:

Code

 

这样几步就 把多出的许多 0 给去除掉了。。。

其实是顺序 没弄对哈。。。

希望对各位有所帮助!!

 

 

 

posted @ 2009-06-01 20:59  阳光下的风  阅读(383)  评论(0)    收藏  举报