unity下载资源存储-⽣成md5 IEnumerator GetText()
{
web下载官方下载using (UnityWebRequest request = UnityWebRequest.Get("localhost:80/"))
{
yield return request.Send();
if (request.isError)
{
Debug.);
}
else
{
/
/ Show results as text
Debug.Log();
// Or retrieve results as binary data
byte[] data = request.downloadHandler.data;
//using (FileStream fs = new FileStream(path, FileMode.Create))
//{
// fs.Write(data, 0, data.Length);
// fs.Close();
// fs.Dispose();
//}
writeFile(path, "34.txt", data);
}
}
}
1.采⽤webrequest下载⽂件,最终⽂件下载得到的是⼀个byte[]数组
2.然后通过FileStream写⽂件的办法来存储⽂件,需要⾃⼰记录⽂件名和后缀
///<summary>
///获取webrequest下载的⽂件的byte[]来存储⽂件
///</summary>
///<param name="path"></param>
///<param name="fileName"></param>
///<param name="bytes"></param>
void writeFile(string path, string fileName, byte[] bytes)
{
FileStream fs = new FileStream(path + "//" + fileName, FileMode.Create); //打开⼀个写⼊流
//string str = "写⼊⽂件";
//byte[] bytes = Encoding.UTF8.GetBytes(str);
fs.Write(bytes, 0, bytes.Length);
fs.Flush(); //流会缓冲,此⾏代码指⽰流不要缓冲数据,⽴即写⼊到⽂件。
fs.Close(); //关闭流并释放所有资源,同时将缓冲区的没有写⼊的数据,写⼊然后再关闭。
fs.Dispose(); //释放流所占⽤的资源,Dispose()会调⽤Close(),Close()会调⽤Flush(); 也会写⼊缓冲区内的数据。 }
3.然后⽣成md5码⽤于资源差异对⽐
///获取⽂件的MD5码
///</summary>
///<param name="fileName">传⼊的⽂件名(含路径及后缀名)</param>
///<returns></returns>
public string GetMD5HashFromFile(string fileName)
{
try
{
FileStream file = new FileStream(fileName, System.IO.FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
catch (Exception ex)
{
throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
}
}
4.把这些信息写在⼀个⾥⾯
信息包括⽂件名⼤⼩ MD5码
下载的时候拿到这个⽂件即可知道要下载哪些⽂件
5.正式流程
【1】下载远程,获取其字符串
【2】获取本地的
【3】如果本地不存在,那么把要下载的⽂件路径存在⼀个字符串队列bundles⾥⾯
【4】如果本地存在,⾸先判断⽐较删除服务器端没有的ab,然后把要下载的放在字符串队列bundles⾥⾯【5】遍历字符串队列bundles,挨个下载即可
【6】最后存储最新的⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论