下载C#示例中的网页
我试图理解这个网页上的一些示例代码:()从internet下载文件 下面引用的代码经过一个循环,获取数据块并将其保存为字符串,直到下载完所有数据。据我所知,“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? 整数计数=0; 做 { //用数据填充缓冲区 count=resStream.Read(基本单位,0,基本单位长度); //确保我们读了一些数据 如果(计数!=0) { //将字节转换为ASCII文本 tempString=Encoding.ASCII.GetString(buf,0,count); //继续构建字符串 某人附加(临时字符串); } } 而(计数>0);//还有数据要读吗? 仅在到达流的结尾时返回下载C#示例中的网页,c#,stream,C#,Stream,我试图理解这个网页上的一些示例代码:()从internet下载文件 下面引用的代码经过一个循环,获取数据块并将其保存为字符串,直到下载完所有数据。据我所知,“count”包含下载数据块的大小,循环一直运行到count为0(下载一个空数据块) 我的问题是,在文件未完全下载的情况下,计数是否可能为0?假设网络连接中断,则流在循环过程中可能没有任何数据可读取,计数应为0,从而过早结束下载。或者ResStream.Read会停止程序直到它获得数据吗?这是保存流的正确方法吗 int count = 0;
0
。Read
调用将阻塞,直到有可用数据或连接已关闭
代码将按原样工作,但可以简化:
int count;
while ((count = resStream.Read(buf, 0, buf.Length)) > 0)
{
// translate from bytes to ASCII text
string tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
MSDN显示了一个相同的示例: