zoukankan      html  css  js  c++  java
  • [转]Unity-移动设备可用的压缩解压缩源码

    原文:http://www.manew.com/thread-103250-1-1.html

    最近在做客户端数据的分离,不希望对项目有什么影响,也不太想用AssetBundle,太麻烦,就在网上找了找开源的C#压缩算法,找来找去,发现不是不支持移动端,就是不能直接压缩文件夹,总之没有一个满意的方案,最后还是找了开源的ICSharpCode.SharpZipLib.Zip的源码,调试了一下修了修,让它支持了移动端,最终解决这个问题,本着开源的精神,发到这里,希望对大家有用

     

    使用方法很简单,里面最外层有一个Util_Zip脚本,直接调用就行

     1 using System;
     2 using System.Collections;
     3 using System.Collections.Generic;
     4 using System.IO;
     5 using System.Linq;
     6 using System.Text;
     7 using UnityEngine;
     8  
     9 public class Util_DownloadZip : MonoBehaviour
    10 {
    11         public void DownloadTo(string url, string targetDirectory, Action<string> failedDel, Action completeDel)
    12         {
    13                 StartCoroutine(DownloadURL(url, targetDirectory, failedDel, completeDel));
    14         }
    15         private IEnumerator DownloadURL(string url, string targetDirectory, Action<string> failedDel, Action completeDel)
    16         {
    17                 WWW www = new WWW(url);
    18                 yield return www;
    19                 if (www.error == null)
    20                 {
    21                         try
    22                         {
    23                                 Util_Zip.ExtractZip(new MemoryStream(www.bytes), targetDirectory);
    24                                 if (completeDel != null)
    25                                 {
    26                                         completeDel();
    27                                 }
    28                         }
    29                         catch (Exception ex)
    30                         {
    31                                 if (failedDel != null)
    32                                 {
    33                                         failedDel("Util_Zip.ExtractZip error:" + ex.Message);
    34                                 }
    35                         }
    36                 }
    37                 else
    38                 {
    39                         if (failedDel != null)
    40                         {
    41                                 failedDel(www.error + "
    " + url);
    42                         }
    43                 }
    44         }
    45 }

    调用的时候第一个参数传压缩包地址,第二个参数传解压缩的文件夹,我是传的Application.persistentDataPath,这个目录安卓iOS都可读写,第三四个参数是成功和失败的回调,可空。

    压缩的接口直接传两个路径进去,就不用说了吧

    Enjoy~

    链接: https://pan.baidu.com/s/1jI9NRj4 密码: 6n3c

  • 相关阅读:
    Git

    学而不记则徒劳无功
    Redis基础
    哈希表
    第一个Python程序
    Python 环境搭建 基于 Windows
    执行数据库的插入操作 insert
    Eclipse连接到My sql数据库的操作总结/配置数据库驱动
    数据库 (一)
  • 原文地址:https://www.cnblogs.com/happlifeZXM/p/6772559.html
Copyright © 2011-2022 走看看