Unity 모 바 일 에서 Zip 파일 을 다운로드 하고 압축 을 풀 수 있 습 니 다.

               Unity       Zip       ,     C#    ,  C#                  ,    ,C#    ICSharpCode.SharpZipLib.dll            。

ICSharpCode.SharpZipLib.dll    :
[    ](http://www.icsharpcode.net/opensource/sharpziplib/)
![       ](https://img-blog.csdn.net/20161009175324634)
     :
/// 
    ///   
    /// 
    /// 
    /// 
    /// 
    IEnumerator Wait_LoadDown(string ZipID,string url)
    {
        WWW www = new WWW(url);
        yield return www;
        if (www.isDone)
        {
            if (www.error == null)
            {
                Debug.Log("    ");
                string dir = Application.persistentDataPath;
                Debug.Log(dir);
                if (!Directory.Exists(dir))
                    Directory.CreateDirectory(dir);

                yield return new WaitForEndOfFrame();
                //      byte   Stream,              
                XQTool.SaveZip(ZipID, url, www.bytes);

            }
            else
            {
                Debug.Log(www.error);
            }
        }
    }

下载完成时存在立即调用解压的方法:

     yield return new WaitForEndOfFrame();
     //      byte   Stream,              
     XQTool.SaveZip(ZipID, url, www.bytes,null);

이 방법 은 다음 과 같다. 즉, 스트레스 해소 의 핵심 이다. /// /// ( ) /// /// www Stream /// ( Obj Folder) /// /// public static bool SaveZip(string ZipID,string url,byte[] ZipByte, string password) { bool result = true; FileStream fs = null; ZipInputStream zipStream = null; ZipEntry ent = null; string fileName; ZipID = Application.persistentDataPath + "/" + ZipID; Debug.Log(ZipID); if (!Directory.Exists(ZipID)) { Directory.CreateDirectory(ZipID); } try { // byte Stream, Stream stream = new MemoryStream(ZipByte); zipStream = new ZipInputStream(stream); if (!string.IsNullOrEmpty(password)) { zipStream.Password = password; } while ((ent = zipStream.GetNextEntry()) != null) { if (!string.IsNullOrEmpty(ent.Name)) { fileName = Path.Combine(ZipID, ent.Name); #region Android fileName = fileName.Replace('\\', '/'); if (fileName.EndsWith("/")) { Directory.CreateDirectory(fileName); continue; } #endregion fs = File.Create(fileName); int size = 2048; byte[] data = new byte[size]; while (true) { size = zipStream.Read(data, 0, data.Length); if (size > 0) { //fs.Write(data, 0, data.Length); fs.Write(data, 0, size);// } else break; } } } } catch (Exception e) { Debug.Log(e.ToString()); result = false; } finally { if (fs != null) { fs.Close(); fs.Dispose(); } if (zipStream != null) { zipStream.Close(); zipStream.Dispose(); } if (ent != null) { ent = null; } GC.Collect(); GC.Collect(1); } return result; }

좋은 웹페이지 즐겨찾기