unity3d 关于断点下载和整个下载(用于更新)
2017-06-16 10:58
253 查看
string t = "";
//总体下载
IEnumerator downfile(string url, string LocalPath,UILabel DesLable)
{
Uri u = new Uri(url);
HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u);
mRequest.Method = "GET";
mRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse();
Stream sIn = wr.GetResponseStream();
FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write);
long length = wr.ContentLength;
long i = 0;
decimal j = 0;
while (i < length)
{
byte[] buffer = new byte[1024];
i += sIn.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
if ((i % 1024) == 0)
{
j = Math.Round(Convert.ToDecimal((Convert.ToDouble(i) / Convert.ToDouble(length)) * 100), 4);
t= "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节 下载进度" + j.ToString() + "%";
DesLable.text=t.ToString();
}
else
{
t = "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节";
DesLable.text=t.ToString();
}
yield return false;
}
sIn.Close();
wr.Close();
fs.Close();
}
string
downloadString="已经下载";
//断点下载
IEnumerator FPointDown(string uri,string saveFile,UILabel DesLable,UISprite LoadSprite)
{
//打开网络连接
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
System.Net.HttpWebRequest requestGetCount = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
long countLength = requestGetCount.GetResponse().ContentLength;
//打开上次下载的文件或新建文件
long lStartPos = 0;
System.IO.FileStream fs;
if (System.IO.File.Exists(saveFile))
{
fs = System.IO.File.OpenWrite(saveFile);
lStartPos = fs.Length;
if (countLength - lStartPos <= 0)
{
fs.Close();
t = "已经";
DesLable.text=t.ToString();
yield break;
}
fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针
}
else
{
fs = new System.IO.FileStream(saveFile, System.IO.FileMode.Create);
}
if (lStartPos > 0)
{
request.AddRange((int)lStartPos); //设置Range值
print(lStartPos);
}
//向server请求。获得server回应数据流
System.IO.Stream ns = request.GetResponse().GetResponseStream();
int len = 1024 * 8;
byte[] nbytes = new byte[len];
int nReadSize = 0;
nReadSize = ns.Read(nbytes, 0, len);
while (nReadSize > 0)
{
fs.Write(nbytes, 0, nReadSize);
nReadSize = ns.Read(nbytes, 0, len);
t = downloadString+" : " + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"+" ---- "+((double)fs.Length/countLength).ToString()+"%";
yield return false;
}
ns.Close();
fs.Close();
//这里放更新安装代码,或者能够測试这个下载的包有没有出错,验证sha和md5
}
//总体下载
IEnumerator downfile(string url, string LocalPath,UILabel DesLable)
{
Uri u = new Uri(url);
HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u);
mRequest.Method = "GET";
mRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse();
Stream sIn = wr.GetResponseStream();
FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write);
long length = wr.ContentLength;
long i = 0;
decimal j = 0;
while (i < length)
{
byte[] buffer = new byte[1024];
i += sIn.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
if ((i % 1024) == 0)
{
j = Math.Round(Convert.ToDecimal((Convert.ToDouble(i) / Convert.ToDouble(length)) * 100), 4);
t= "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节 下载进度" + j.ToString() + "%";
DesLable.text=t.ToString();
}
else
{
t = "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节";
DesLable.text=t.ToString();
}
yield return false;
}
sIn.Close();
wr.Close();
fs.Close();
}
string
downloadString="已经下载";
//断点下载
IEnumerator FPointDown(string uri,string saveFile,UILabel DesLable,UISprite LoadSprite)
{
//打开网络连接
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
System.Net.HttpWebRequest requestGetCount = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
long countLength = requestGetCount.GetResponse().ContentLength;
//打开上次下载的文件或新建文件
long lStartPos = 0;
System.IO.FileStream fs;
if (System.IO.File.Exists(saveFile))
{
fs = System.IO.File.OpenWrite(saveFile);
lStartPos = fs.Length;
if (countLength - lStartPos <= 0)
{
fs.Close();
t = "已经";
DesLable.text=t.ToString();
yield break;
}
fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针
}
else
{
fs = new System.IO.FileStream(saveFile, System.IO.FileMode.Create);
}
if (lStartPos > 0)
{
request.AddRange((int)lStartPos); //设置Range值
print(lStartPos);
}
//向server请求。获得server回应数据流
System.IO.Stream ns = request.GetResponse().GetResponseStream();
int len = 1024 * 8;
byte[] nbytes = new byte[len];
int nReadSize = 0;
nReadSize = ns.Read(nbytes, 0, len);
while (nReadSize > 0)
{
fs.Write(nbytes, 0, nReadSize);
nReadSize = ns.Read(nbytes, 0, len);
t = downloadString+" : " + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"+" ---- "+((double)fs.Length/countLength).ToString()+"%";
yield return false;
}
ns.Close();
fs.Close();
//这里放更新安装代码,或者能够測试这个下载的包有没有出错,验证sha和md5
}
相关文章推荐
- unity3d 关于断点下载和整个下载(用于更新)
- unity3d 关于断点下载和整个下载(用于更新)
- unity3d 关于断点下载和整个下载(用于更新)
- android4.4中关于不能再主线程下载和在主线程中更新UI的矛盾
- 关于ubuntu更新sudo apt-get update和sudo apt-get upgrade下载缓慢的问题
- Android关于后台下载前台通知更新进度条的问题
- 关于《王福朋petshop4.0视频教程》下载的更新
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.5.1727.0
- 关于Qt使用QNetworkAccessManager下载文件(实现断点续传功能)
- 关于下载Android源码是无法获取repo和更新Android SDK的错误
- 关于魔兽世界3.0下载了2.64G更新包后仍然提示需要下载4.6G文档的解决方法收藏
- 关于AsyncTask异步下载图片带有进度条更新
- 关于ruby的电子书下载(持续更新2006-12-4)
- Unity3D热更新全书-下载 唯一的一篇
- 关于Android SDK 下载和更新失败解决办法
- unity3d关于天空变换代码下载
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.6.1854
- 【原】关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.7.1903.0
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.5.1738.0
- [转]DX1.5关于帖子查看数及附件下载数延迟更新的详解