JS/TS语言zip压缩解压缩三方库及其使用
TS语言的Laya项目里,要用typescript对压缩过的文件解压缩。文件是AS3写的工具导出的。怎么办,上github找一个库,地址如下:https://github.com/imaya/zlib.js
下载找到的zlib.js或zlib.min.js文件,自己编写zlib.min.d.ts文件,代码如下:
export namespace Zlib {
class Inflate {
constructor(data:any);
decompress(): any;
}
class Deflate {
constructor(data:any);
compress():any;
}
}把zlib.min.js和zlib.min.d.ts文件放到项目里,这种工具性质的代码,最好写成上下文无关的静态类方法。
export class ByteUtil
{
* 压缩 二进制数据
* @param bytes
* @returns Array.<number> or Uint8Array
*/
public static compress(bytes:Laya.Byte):any
{
var byte8 = new Uint8Array(bytes.buffer);
var defate = new Zlib.Deflate(byte8);
var compressed = defate.compress();
return compressed;
}
/**
* 解压 二进制数据
* @param compressed Array.<number> or Uint8Array
*/
public static uncompress(compressed: any): Laya.Byte
{
var inflate = new Zlib.Inflate(compressed);
var plain = inflate.decompress();
var plainByte: Laya.Byte = new Laya.Byte(plain);
return plainByte;
}
}好了。AS3中可以直接保存Object对象到文件,但js、ts不行,所以构造成成通用的JSON格式,压缩后保存。
保存的配置文件叫joeng.data,以Laya.Loader.BUFFER的形式加载
let configData:Laya.Byte = new Laya.Byte();
configData.writeArrayBuffer(Laya.Loader.getRes("res/pre/joeng.data"));
let configUint8Array = new Uint8Array(configData.buffer);
configData = ByteUtil.uncompress(configUint8Array);
configData.pos = 0;
let configStr:string = configData.getUTFBytes();然后再把字符串configStr转成object即可。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!