LZMA压缩文件与解压文件
来源:互联网 发布:历史api数据后原油波动 编辑:程序博客网 时间:2024/06/15 18:15
Hello,我是KitStar。
此上文章由雨松MOMO 2014年08月12日 于雨松MOMO程序研究院 发表。
以下文章整理的不对。还请见谅。
Unity的Assetbundle是使用LZMA压缩算法压缩的,它是一个开源的类库,有C、 C++、C#、JAVA的类库,Unity里面我们当然要使用C#的类库啦。
下载地址:http://www.7-zip.org/sdk.html 、如下图所示,因为9.22是Beta版本,所以我们还是老老实实下载9.20正式版本。
解压后把整个CS文件夹拖入Unity工程即可。当我在拖入Unity的时候发现Settings.cs报错了,查了一下是因为mono并不是完整的.net 。不过这个文件我们不需要用,所以直接把Settings.cs删除即可。
下面上代码,这是编辑时的一个类。我先把根目录下的一个文件压缩,接着在解压缩。
using UnityEngine;using System.Collections;using UnityEditor;using SevenZip.Compression.LZMA;using System.IO;using System; public class Test : Editor { [MenuItem ("MyMenu/CompressFile")]static void CompressFile () {//压缩文件CompressFileLZMA(Application.dataPath+"/1.jpg",Application.dataPath+"/2.zip");AssetDatabase.Refresh(); }[MenuItem ("MyMenu/DecompressFile")]static void DecompressFile () {//解压文件DecompressFileLZMA(Application.dataPath+"/2.zip",Application.dataPath+"/3.jpg");AssetDatabase.Refresh();} private static void CompressFileLZMA(string inFile, string outFile){SevenZip.Compression.LZMA.Encoder coder = new SevenZip.Compression.LZMA.Encoder();FileStream input = new FileStream(inFile, FileMode.Open);FileStream output = new FileStream(outFile, FileMode.Create);// Write the encoder propertiescoder.WriteCoderProperties(output);// Write the decompressed file size.output.Write(BitConverter.GetBytes(input.Length), 0, 8);// Encode the file.coder.Code(input, output, input.Length, -1, null);output.Flush();output.Close();input.Close();}private static void DecompressFileLZMA(string inFile, string outFile){SevenZip.Compression.LZMA.Decoder coder = new SevenZip.Compression.LZMA.Decoder();FileStream input = new FileStream(inFile, FileMode.Open);FileStream output = new FileStream(outFile, FileMode.Create);// Read the decoder propertiesbyte[] properties = new byte[5];input.Read(properties, 0, 5);// Read in the decompress file size.byte [] fileLengthBytes = new byte[8];input.Read(fileLengthBytes, 0, 8);long fileLength = BitConverter.ToInt64(fileLengthBytes, 0); // Decompress the file.coder.SetDecoderProperties(properties);coder.Code(input, output, input.Length, fileLength, null);output.Flush();output.Close();input.Close();} }
此上文章由雨松MOMO 2014年08月12日 于雨松MOMO程序研究院 发表。
原文章地址:http://www.xuanyusong.com/archives/3095
0 0
- LZMA压缩文件与解压文件
- Unity3D LZMA压缩文件与解压文件
- Unity3D研究院之LZMA压缩文件与解压文件
- Unity3D研究院之LZMA压缩文件与解压文件
- Unity3D研究院之LZMA压缩文件与解压文件
- Unity3D研究院之LZMA压缩文件与解压文件
- lzma sdk文件压缩与解压
- C++ 压缩文件与解压文件
- C#压缩文件,解压文件。
- Ubuntu压缩文件解压文件
- linux压缩文件&解压文件
- Zip压缩文件 与 解压
- Zip压缩文件 与 解压
- 在ubuntu linux下压缩文件与解压文件
- Asp.net调用RAR压缩文件与解压文件源码
- Zip压缩文件 与 解压 (MFC 文件操作 四 )
- Zip压缩文件 与 解压 (MFC 文件操作 四 )
- java压缩文件和解压文件
- 拼数
- Redis和Memcache对比及选择
- python3+PyQt5 实现自定义窗口部件--Counters自定窗口部件
- C++ 大数的+-*/算法
- 递归--【全排列问题】九度1459.Prime ring problem
- LZMA压缩文件与解压文件
- 数列分段Section I
- TOML简介
- 华为P8桌面上的短信图标不见了怎么办
- offsetleft和style.left的区别
- Dynamics CRM 2015-Form之添加Ribbon Button
- 重建二叉树
- MACOS: 如何在应用程序中应用文件超链接,直接打开文件
- 二分法入门(二)——POJ 3258,2976;HDU 4430;CodeForces 535C;Gym 101194D;ACdream 1066