那么这里呢,我用的是第三发的压缩库,这个是用到一个dll,也就是ICSharpCode.SharpZipLib.Zip.dll

链接:

ICSharpCode.SharpZipLib.dll_免费高速下载|百度网盘-分享无限制

这里是Zip的解压方式

/// <summary>
/// 扩展类
/// </summary>
public static class Utils
{/// <summary>/// 解压文件/// </summary>/// <param name="targetPath">解压位置</param>/// <param name="zipFilePath">zip压缩文件目录(包括文件名和后缀)</param>public static void DecompressToDirectory(string targetPath, string zipFilePath){if (File.Exists(zipFilePath)){var compressed = File.OpenRead(zipFilePath);compressed.DecompressToDirectory(targetPath);}else{Debug.LogError($"Zip不存在: {zipFilePath}");}}public static void DecompressToDirectory(this Stream source, string targetPath){targetPath = Path.GetFullPath(targetPath);using (ZipInputStream decompressor = new ZipInputStream(source)){ZipEntry entry;while ((entry = decompressor.GetNextEntry()) != null){string name = entry.Name;if (entry.IsDirectory && entry.Name.StartsWith("\\"))name = entry.Name.Replace("\\", "");string filePath = Path.Combine(targetPath, name);string directoryPath = Path.GetDirectoryName(filePath);if (!string.IsNullOrEmpty(directoryPath) && !Directory.Exists(directoryPath))Directory.CreateDirectory(directoryPath);if (entry.IsDirectory)continue;byte[] data = new byte[2048];using (FileStream streamWriter = File.Create(filePath)){int bytesRead;while ((bytesRead = decompressor.Read(data, 0, data.Length)) > 0){streamWriter.Write(data, 0, bytesRead);}}}Debug.Log("解压完成");}}
}

使用代码:Utils.DecompressToDirectory(targetPath, zipFileName);

压缩文件其实也和解压文件类似,都是通过文件流来进行处理:

/// <summary>
/// 压缩文件
/// </summary>
/// <param name="filePath">zip文件路径</param>
/// <param name="zipPath">压缩到哪个文件路径</param>
public static void ZipFile(string filePath, string zipPath)
{if (!File.Exists(filePath)){Debug.LogError("需要压缩的文件不存在");}string zipFileName = zipPath  + Path.GetFileNameWithoutExtension(filePath) + ".zip";Debug.Log(zipFileName);using (FileStream fs = File.Create(zipFileName)){using (ZipOutputStream zipStream = new ZipOutputStream(fs)){using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)){string fileName = Path.GetFileName(filePath);ZipEntry zipEntry = new ZipEntry(fileName);zipStream.PutNextEntry(zipEntry);byte[] buffer = new byte[1024];int sizeRead = 0;try{do{sizeRead = stream.Read(buffer, 0, buffer.Length);zipStream.Write(buffer, 0, sizeRead);} while (sizeRead > 0);}catch(Exception e){Debug.LogException(e);}stream.Close();}zipStream.Finish();zipStream.Close();}fs.Close();}
}

Unity3d通用工具类之解压缩文件相关推荐

  1. Unity3d通用工具类之生成文件的MD5

    今天我们来写写工具类,这个类有什么用呢? 也就是无论你做什么项目,这个工具类你都可以拿来用,之所以通用,是可以适用所有项目. 这节我主要讲如何生成文件的MD5码. 那么这个MD5是个什么鬼东西,读者可 ...

  2. Unity3d通用工具类之定时触发器

    时隔多日,好不容易挤出点时间来写写博文.不容易,请送我几朵红花,点个赞也行. 今天呢,我们主要来扩展下通用工具类==>定时触发器. 顾名思义,所谓的定时触发器,就是告诉程序在过多长时间后,我要执 ...

  3. ftp上传-下载文件通用工具类,已实测

    话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...

  4. Java Zip解压缩文件夹工具类 ----ZipUtils

    在项目中如果遇到解压缩 文件的话,可以直接使用这个工具类进行操作.不多说,直接上代码: 1. maven 依赖: 可能会有多余的,没有做处理 <build><plugins>& ...

  5. java通用解析excel_java读取简单excel通用工具类

    本文实例为大家分享了java读取简单excel通用工具类的具体代码,供大家参考,具体内容如下 读取excel通用工具类 import java.io.File; import java.io.File ...

  6. c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类

    该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...

  7. 【干货分享】通用工具类

    项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类. 放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码. 公司研发团队经过几个项目的洗礼,沉淀和积累了许多通用工具类. 自己抽空将这些散落 ...

  8. java使用tar算法压缩解压缩文件、数据流、byte[]字节数组

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用tar算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试代 ...

  9. java使用BZip算法压缩解压缩文件、数据流、byte[]字节数组

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用BZip算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试 ...

  10. 解压缩文件并将其中的excel文件汇总

    首先我有一个压缩文件,如下图所示: package com.excel;import org.apache.commons.compress.archivers.sevenz.SevenZArchiv ...

最新文章

  1. JavaScript 编程精解 中文第三版 零、前言
  2. 如何格式化电脑_U盘提示格式化后如何恢复数据
  3. canvas中文显示乱码 html5_浅析HTML5 Canvas的几种中文字体缩小方案
  4. java jdk API中英文下载
  5. Cloud for Customer mobile应用里pass Code登录界面的绘制原理
  6. NOIP2021:游记
  7. 帝豪gl车机系统降级_何以剑指合资?帝豪GL/英朗底盘对比
  8. Rust 修复隐秘的ReDoS 漏洞
  9. [物理学与PDEs]第1章第9节 Darwin 模型 9.3 Darwin 模型
  10. haimeiktv服务器系统,海媚 Haimei KTV8001 智能网络效果器
  11. vue+node项目部署上线
  12. css如何对上边框加阴影,CSS怎么添加阴影边框?
  13. 编译器和编辑器的区别
  14. 数据分析过程中,我们常犯的错误有哪些?
  15. 稳定获取Android设备唯一码(UUID)的解决方案
  16. median函数 oracle9i,oracle10g学习笔记
  17. 【机器学习必备知识】NumPy线性代数详解
  18. 移动设备网页中快速响应单击动作
  19. 微信浏览器 点击 出现卡顿现象及解决方案
  20. mybatis 简介、中文文档、中英对照文档 下载

热门文章

  1. 三条中线分的六个三角形_一个三角形的三条中线分别是3、4、5,求这个三角形的面积...
  2. 某蒟蒻无聊竟用UNO做了个复读机?
  3. 关于 iOS 的 StoryBoard,接受的那一刻才发现她的美 - 当然美的事物都需要业心照料
  4. 百度文库上传总是被私有,如何正确上传百度文库
  5. Win10 如何删除系统盘大文件hiberfil.sys
  6. U盘无法与计算机连接,连接电脑后为什么u盘不显示 连接电脑后u盘不显示原因【图文】...
  7. IMDB电影排行爬取分析
  8. 冷水机组选型公式与运行参数
  9. Ubuntu Linux,及Python matplot,安装Times New Roman等字体,让图标签可以用Times New Roman等字体
  10. [Spark进阶]--深入Spark Locality Level