这段代码是我在网上找的,但是它是接收完后才写入磁盘。public void downstart()
{
WebClient web_cli = new WebClient();
//获取一个文件的长度
WebRequest web_req = WebRequest.Create(filepath); //发出对这个地址的请求
WebResponse web_res = web_req.GetResponse(); //做出的响应
size_ = web_res.ContentLength; //获取到文件的长度
double size_MB = size_ / 1024.0/1024.0;
progressBar1.Maximum = (int)size_; //progressBar1 是进度条
web_res.Close(); //开始下载
web_cli.DownloadData(filepath); //加载资源
Stream str_file = web_cli.OpenRead(filepath); //以流方式读文件
byte[] mbyte = new byte[size_]; //
int len = (int)size_; //文件长度
int i = 0;
while ((int)size_ > 0) //如果有目标文件
{
int n = str_file.Read(mbyte, i, len);
this.recievedDate += n;
recieved += n;
if (n == 0)
{
timer1.Stop();
break; //全部读完了退出循环
}
progressBar1.Value = i; //进度条显示进度
i = i + n;
len = len - n;
//显示 已经下载的数据大小/总的大小
double b = i /1024.0/1024.0;
this.lbsize.Text = "大小:"
+ string.Format("{0:N2}", b) + "M/"
+ string.Format("{0:N2}", size_MB)+"M";
}
progressBar1.Value = progressBar1.Maximum;
FileStream fstrm = new FileStream(savepath, FileMode.OpenOrCreate, FileAccess.Write);
fstrm.Write(mbyte, 0, (int)size_);//从流写到文件
fstrm.Close(); }
{
WebClient web_cli = new WebClient();
//获取一个文件的长度
WebRequest web_req = WebRequest.Create(filepath); //发出对这个地址的请求
WebResponse web_res = web_req.GetResponse(); //做出的响应
size_ = web_res.ContentLength; //获取到文件的长度
double size_MB = size_ / 1024.0/1024.0;
progressBar1.Maximum = (int)size_; //progressBar1 是进度条
web_res.Close(); //开始下载
web_cli.DownloadData(filepath); //加载资源
Stream str_file = web_cli.OpenRead(filepath); //以流方式读文件
byte[] mbyte = new byte[size_]; //
int len = (int)size_; //文件长度
int i = 0;
while ((int)size_ > 0) //如果有目标文件
{
int n = str_file.Read(mbyte, i, len);
this.recievedDate += n;
recieved += n;
if (n == 0)
{
timer1.Stop();
break; //全部读完了退出循环
}
progressBar1.Value = i; //进度条显示进度
i = i + n;
len = len - n;
//显示 已经下载的数据大小/总的大小
double b = i /1024.0/1024.0;
this.lbsize.Text = "大小:"
+ string.Format("{0:N2}", b) + "M/"
+ string.Format("{0:N2}", size_MB)+"M";
}
progressBar1.Value = progressBar1.Maximum;
FileStream fstrm = new FileStream(savepath, FileMode.OpenOrCreate, FileAccess.Write);
fstrm.Write(mbyte, 0, (int)size_);//从流写到文件
fstrm.Close(); }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货