首页 新闻 会员 周边

请问这个下载文件的方法为什么要这样写?谢谢!

0
悬赏园豆:20 [已解决问题] 解决于 2012-09-14 16:27

整个方法代码如下:

public static bool DownLoadFile(string serverFile, string localFile)
{
try
{
WebRequest request = WebRequest.Create(serverFile);
WebResponse response = request.GetResponse();
long fileLength = response.ContentLength;
byte[] buffer = new byte[fileLength];
long bufferLength = fileLength;
int maxReadCount = bufferLength > int.MaxValue ? int.MaxValue : buffer.Length;
int startPos = 0;
using (Stream stream = response.GetResponseStream())
{
while (bufferLength > 0)
{
int downByte = stream.Read(buffer, startPos, maxReadCount);
if (downByte <= 0) { break; }
startPos += downByte;
bufferLength -= downByte;
maxReadCount -= downByte;
}
using (FileStream fs = new FileStream(localFile, FileMode.Create, FileAccess.Write))
{
fs.Write(buffer, 0, buffer.Length);
stream.Close();
fs.Close();
}
}

return true;
}
catch (Exception ex)
{
Utility.GetInstance().Logger.Error("下载文件出错:"+ex.Message);
return false;
}
}

我看不明白的有两个地方:

1,int maxReadCount = bufferLength > int.MaxValue ? int.MaxValue : buffer.Length;

maxReadCount为什么取最小值:

 

2,如图,为什么越到后边往buffer中写入的数据越小?

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2011-12-27 15:26
< >
分享
最佳答案
0

飘过...同求答案..

收获园豆:20
hoxfeek | 菜鸟二级 |园豆:370 | 2012-09-13 16:57
其他回答(2)
0

分块下载,什么取最小值?int.maxvalue是最大值。。你可以查下?:操作符,你可以单步调试下。

Rookier | 园豆:652 (小虾三级) | 2011-12-27 16:49
0

程序错误。本想实现读取超大文件的

ChatinCode | 园豆:2272 (老鸟四级) | 2011-12-27 17:04

请问该怎么改写这段代码呢?麻烦你把改后的代码发给我好吗?

支持(0) 反对(0) hexllo | 园豆:318 (菜鸟二级) | 2011-12-28 08:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册