错误一:Stream Read 误区
最近发现许多小问题 使得我们头昏眼花。。在此进行记录!
想必大家都用过流(Stream)
我就只说一下它的Read()方法。。
一般我们从一个URL获得这个地址所返回的内容时。就会用到HttpWebResponse
例如:
这个是一个 返回彩信信息的 Stream
而当我们读取它的时候 一般也会采用下面的方法。(注:只针对读取流!)
1
List<byte> list = new List<byte>();
2
int read = 1024;
3
while (read > 0)
4
{
5
byte[] d = new byte[read];
6
read = sIn.Read(d, 0, read);
7
list.AddRange(d);
8
}
List<byte> list = new List<byte>();2
int read = 1024;3
while (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) 有了冲突!
所以我加以改动做出了 如下:
这样几步就 把多出的许多 0 给去除掉了。。。
其实是顺序 没弄对哈。。。
希望对各位有所帮助!!




}
浙公网安备 33010602011771号