unity3d 关于断点下载和整个下载(用于更新)
2014-04-23 09:49
190 查看
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);
}
//向服务器请求,获得服务器回应数据流
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);
}
//向服务器请求,获得服务器回应数据流
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 关于断点下载和整个下载(用于更新)
- 关于Android SDK 下载和更新失败解决办法
- unity3d关于天空变换代码下载
- 关于HTTP与FTP断点下载文件个人理解小结
- 关于VS工具的官方下载地址.....不定期更新中
- Unity3D热更新 下载
- Unity3D热更新全书-下载 唯一的一篇
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.5.1727.0
- 关于魔兽世界3.0下载了2.64G更新包后仍然提示需要下载4.6G文档的解决方法收藏
- unity3d关于天空变换方法下载
- 关于《王福朋petshop4.0视频教程》下载的更新
- Android socket 文件传输: 用于app更新,大文件上传下载
- Ma下Android Studio关于gradle 下载更新的问题
- 【系统配置系列】关于Ubuntu加速下载资源库/加速更新软件,你需要知道的事
- C#一个简单下载程序实例(可用于更新)
- 关于Visual Assist X(VC助手)几个最新版本的比较与破解下载——更新到10.6.1854
- 关于ubuntu更新sudo apt-get update和sudo apt-get upgrade下载缓慢的问题
- Android 文件断点下载和通知栏的提示及apk更新安装