IEnumerator GetText()

{

using (UnityWebRequest request = UnityWebRequest.Get("localhost:80/txt/test.txt"))

{

yield return request.Send();

if (request.isError)

{

Debug.Log(request.error);

}

else

{

// Show results as text

Debug.Log(request.downloadHandler.text);

// 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写文件的办法来存储文件,需要自己记录   文件名和后缀

///

/// 获取webrequest下载的文件的byte[]来存储文件

///

///

///

///

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码

///

/// 传入的文件名(含路径及后缀名)

///

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.把这些信息写在一个Version.txt里面

信息包括 文件名 大小 MD5码

下载的时候拿到这个文件即可知道要下载哪些文件

5.正式流程

【1】下载远程Version.txt,获取其字符串

【2】获取本地的Version.txt

【3】如果本地不存在Version.txt,那么把要下载的文件路径存在一个字符串队列bundles里面

【4】如果本地存在Version.txt,首先判断比较  删除服务器端没有的ab,然后把要下载的放在字符串队列bundles里面

【5】遍历字符串队列bundles,挨个下载即可

【6】最后存储最新的Version.txt文件

 

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。