我试图了解这个网页上的一些示例代码:(http://www.csharp-station.com/HowTo/HttpWebFetch.aspx)从互联网上下载文件 .
下面引用的代码片段通过循环获取数据块并将其保存为字符串,直到所有数据都已下载 . 据我所知,“count”包含下载的块的大小,循环运行直到count为0(下载一个空的数据块) .
我的问题是,如果没有完全下载文件,计数是否可能为0?假设网络连接中断,流可能没有任何数据可以在循环传递中读取,并且计数应该为0,过早地结束下载 . 或者ResStream.Read是否会停止程序直到它获取数据?这是保存流的正确方法吗?
int count = 0;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?
1 回答
Stream.Read只会在到达流末尾时返回
0
.Read
调用将阻塞,直到有可用数据或连接已关闭 .代码将按原样运行,但可以简化: