当前位置: 首页 > news >正文

Unity 下载Zip压缩文件并且解压缩

1、Unity下载Zip压缩文件主要使用UnityWebRequest类。

可以参考以下方法:

        webRequest = UnityWebRequest.Get(Path1);  //压缩文件路径webRequest.timeout = 60;webRequest.downloadHandler = new DownloadHandlerBuffer();long fileSize = GetLocalFileSize(Path2);  //存贮路径webRequest.SetRequestHeader("Range", "bytes=" + fileSize + "-");        webRequest.SendWebRequest();while (!webRequest.isDone){float progress = Mathf.Clamp01(webRequest.downloadProgress);progressBar.fillAmount = progress;progressText.text = string.Format("{0}%", Mathf.RoundToInt(progress * 100f));yield return null;}if (webRequest.isNetworkError || webRequest.isHttpError){progressObj.SetActive(false);            }else{byte[] downloadedData = webRequest.downloadHandler.data;            File.WriteAllBytes(Path2, downloadedData);}

其中这里我还用个while循环写了个下载进度条。 

2、解压Zip压缩文件用到的System.IO.Compression下的ZipFile.OpenRead()方法。

具体可以参考以下代码:

    /// <summary>/// 解压/// </summary>/// <param name="zipFilePath">压缩文件路径</param>/// <param name="extractPath">解压路径</param>public void ExtractZipFile(string zipFilePath, string extractPath){using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)){            try{foreach (ZipArchiveEntry entry in archive.Entries){string entryPath = Path.Combine(extractPath, entry.FullName);if (entry.Name == ""){Directory.CreateDirectory(entryPath);}else{                        entry.ExtractToFile(entryPath, true);                   }}}catch(Exception e){UnityEngine.Debug.Log(e.Message);        }           }}

相关文章:

  • Android Rxjava架构原理与使用的详解解答
  • 【第2章 Node.js基础】2.3 Node.js事件机制
  • 【数学】Pair of Topics—CF1324D
  • Android各类View触摸监听器失效
  • 【GitHub】PR的学习笔记
  • bin、hex、ELF文件格式上的区别
  • Spring 常见面试题
  • 基于JavaWeb+SpringBoot+Vue摩托车商城微信小程序系统的设计和实现
  • STM32——NVIC中断优先级管理分析
  • springcloud旅游网站源码
  • 使用LLM-Tuning实现百川和清华ChatGLM的Lora微调
  • C_7练习题
  • 【计算机网络】UDP协议
  • JavaWeb篇_09——Tomcat运行过程以及Servlet继承结构
  • 用Go实现yaml文件节点动态解析
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • chrome扩展demo1-小时钟
  • ES6--对象的扩展
  • jQuery(一)
  • laravel 用artisan创建自己的模板
  • Mysql优化
  • python 装饰器(一)
  • Python爬虫--- 1.3 BS4库的解析器
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • redis学习笔记(三):列表、集合、有序集合
  • Shell编程
  • vue--为什么data属性必须是一个函数
  • 阿里云前端周刊 - 第 26 期
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于axios的vue插件,让http请求更简单
  • 数据仓库的几种建模方法
  • 云大使推广中的常见热门问题
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (02)Hive SQL编译成MapReduce任务的过程
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四) Graphivz 颜色选择
  • (译) 函数式 JS #1:简介
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • @SpringBootApplication 包含的三个注解及其含义
  • @拔赤:Web前端开发十日谈
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [Asp.net mvc]国际化
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CodeForces-759D]Bacterial Melee
  • [Godot] 3D拾取
  • [GXYCTF2019]BabySQli1
  • [JavaEE系列] wait(等待) 和 notify(唤醒)