Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下载C#示例中的网页_C#_Stream - Fatal编程技术网

下载C#示例中的网页

下载C#示例中的网页,c#,stream,C#,Stream,我试图理解这个网页上的一些示例代码:()从internet下载文件 下面引用的代码经过一个循环,获取数据块并将其保存为字符串,直到下载完所有数据。据我所知,“count”包含下载数据块的大小,循环一直运行到count为0(下载一个空数据块) 我的问题是,在文件未完全下载的情况下,计数是否可能为0?假设网络连接中断,则流在循环过程中可能没有任何数据可读取,计数应为0,从而过早结束下载。或者ResStream.Read会停止程序直到它获得数据吗?这是保存流的正确方法吗 int count = 0;

我试图理解这个网页上的一些示例代码:()从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);//还有数据要读吗? 仅在到达流的结尾时返回
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显示了一个相同的示例: