Documentation ¶
Overview ¶
Package LzmaSpec
本文件照抄官方SDK: [https://www.7-zip.org/a/lzma-specification.7z] 本文件用法参考DecodeLzma.go
懒得将压缩代码也抄一份,因为平时代码多数用解压,需要压缩就用下面的jar包吧 lzma.jar: [https://www.7-zip.org/a/lzma2201.7z]的java代码打包 bash -x make_java.sh 打包java代码为jar文件 java -jar lzma.jar: 查看帮助 java -jar lzma.jar e a.txt a.lzma: 压缩a.txt到a.lzma java -jar lzma.jar d a.lzma a.txt: 解压a.lzma到a.txt
另外也可以用7z官网下载的lzma.exe来压缩和解压缩,但只是windows下用
Package LzmaSpec ¶
本文件依赖LzmaUtil.c,是吧lzma2201\C\Util\Lzma\LzmaUtil.c里面改出来的 这个是Windows和Linux下都可以编译成功,在include目录下把lzma2201\C这里面的对应.h拷贝的 执行如下就可以编译出libLzmaUtil.a mingw32-make.exe -f makefile.util SOURCE=D:\code_project\c\lzma2201\C
Package LzmaSpec ¶
注意本程序只适用于Windows下用,我已经试过Linux下编译不过 本程序和使用LZMA.dll方式的区别就是,使用静态编译,不需要依赖dll文件 执行如下命令,指定编译目录可以编译产生liblzma.a的静态库 mingw32-make.exe -f makefile.cgo SOURCE=D:\code_project\c\lzma2201\C 记得修改makefile里面的SOURCE路径,我已经将编译号的liblzma.a提交git了,大家随意使用 注意需要复制一系列头文件
Package LzmaSpec ¶
[https://www.7-zip.org/a/lzma2201.7z]解压后lzma2201\C\Util\LzmaLib 使用vs2010打开LzmaLib.dsw,在配置管理器里面新建一个x64的release版本(产生dll比较小) 然后生成解决方案,会在C:\Util产生LZMA.dll文件
控制台命令生成lzma.dll cmd /k "D:\xxx\vcvars64.bat" 在cmd中生效vs各项配置 按照 https://www.cnblogs.com/janbar/p/15644092.html 文章 cd lzma2201\C\Util\LzmaLib nmake CPU=AMD64 NEW_COMPILER=1 MY_STATIC_LINK=1 就得到了lzma.dll
安装vs2010,可以用下面命令查看dll对外提供接口,只能查看函数名 dumpbin.exe -exports c:\Util\LZMA.dll 然后在这个\lzma2201\C\LzmaLib.h里面可以看到 LzmaCompress和 LzmaUncompress的定义 以及各种注意事项,下面用法就是从上面得到的
Index ¶
- Constants
- func LoadLzmaDll(file string)
- func LzmaCompress(r io.Reader, w io.Writer, useType UseType) error
- func LzmaCompressUtil(src, dst string, mode UtilType) error
- func LzmaUnCompress(r io.Reader, w io.Writer, useType UseType) error
- func NewCLzmaDecoder(r io.Reader, w io.Writer) *cLzmaDecoder
- type UseType
- type UtilType
Constants ¶
const ( LzmaResError = 0 LzmaResFinishedWithMarker = 1 LzmaResFinishedWithoutMarker = 2 )
const ( SzOk = 0 SzErrorData = 1 SzErrorMem = 2 SzErrorCrc = 3 SzErrorUnsupported = 4 SzErrorParam = 5 SzErrorInputEOF = 6 SzErrorOutputEOF = 7 SzErrorRead = 8 SzErrorWrite = 9 SzErrorProgress = 10 SzErrorFail = 11 SzErrorThread = 12 SzErrorArchive = 16 SzErrorNoArchive = 17 )
from 7zTypes.h
Variables ¶
This section is empty.
Functions ¶
func LoadLzmaDll ¶
func LoadLzmaDll(file string)
func LzmaCompress ¶
LzmaCompress write {[5]byte porps} + {[8]byte fileLen} + {data}
func LzmaCompressUtil ¶
func LzmaUnCompress ¶
LzmaUnCompress read {[5]byte porps} + {[8]byte fileLen} + {data}