【发布时间】:2010-05-01 21:35:33
【问题描述】:
我正在尝试了解此网页上的一些示例代码:(http://www.csharp-station.com/HowTo/HttpWebFetch.aspx) 从 Internet 下载文件。
下面引用的一段代码通过一个循环获取数据块并将它们保存到一个字符串中,直到所有数据都下载完毕。据我了解,“count”包含下载块的大小,循环运行直到 count 为 0(下载了一个空的数据块)。
我的问题是,如果没有完全下载文件,计数是否可能为 0?假设如果网络连接中断,则流可能没有任何数据可在循环通过时读取,并且计数应为 0,过早结束下载。或者 ResStream.Read 会停止程序直到它获取数据?这是保存流的正确方法吗?
整数计数 = 0; 做 { // 用数据填充缓冲区 计数 = resStream.Read(buf, 0, buf.Length); // 确保我们读取了一些数据 如果(计数!= 0) { // 从字节转换为 ASCII 文本 tempString = Encoding.ASCII.GetString(buf, 0, count); // 继续构建字符串 sb.Append(tempString); } } 而(计数> 0); // 还有更多数据要读取吗?【问题讨论】:
-
MSDN 显示了一个相同的示例:msdn.microsoft.com/en-us/library/…