node.js 利用JSZIP 压缩文件、文件夹,以及解压压缩文件中的文件
一、使用JSZIP包来 打包文件或者文件夹
1. node.js安装 jszip(已安装跳过)
npm install jszip
2.编写 jszip打包代码
1 let fs = require("fs");//获取文件系统模块,负责读写文件 2 let path = require("path");//工具模块,处理文件路径的小工具 3 let JSZIP = require("jszip"); 4 let zip = new JSZIP(); 5 6 //读取目录及文件 7 function readDir(obj, nowPath) { 8 let files = fs.readdirSync(nowPath);//读取目录中的所有文件及文件夹(同步操作) 9 files.forEach(function (fileName, index) {//遍历检测目录中的文件 10 console.log(fileName, index);//打印当前读取的文件名 11 let fillPath = nowPath + "/" + fileName; 12 let file = fs.statSync(fillPath);//获取一个文件的属性 13 if (file.isDirectory()) {//如果是目录的话,继续查询 14 let dirlist = zip.folder(fileName);//压缩对象中生成该目录 15 readDir(dirlist, fillPath);//重新检索目录文件 16 } else { 17 obj.file(fileName, fs.readFileSync(fillPath));//压缩目录添加文件 18 } 19 }); 20 } 21 22 //开始压缩文件 23 function startZIP() { 24 var currPath = __dirname;//文件的绝对路径 当前当前js所在的绝对路径 25 var targetDir = path.join(currPath, "JsonMerge"); 26 readDir(zip, targetDir); 27 zip.generateAsync({//设置压缩格式,开始打包 28 type: "nodebuffer",//nodejs用 29 compression: "DEFLATE",//压缩算法 30 compressionOptions: {//压缩级别 31 level: 9 32 } 33 }).then(function (content) { 34 fs.writeFileSync(currPath + "/result.zip", content, "utf-8");//将打包的内容写入 当前目录下的 result.zip中 35 }); 36 } 37 38 startZIP();
3. H5游戏客户端白鹭引擎利用jszip 解压配置文件
RES.getResByUrl(configURL, function (data) { let txt = new JSZIP(data).file("a.json").asText(); let jsonObj = JSON.parse(txt);//转化为json对象 //将配置信息存储便于运用 }, this, RES.ResourceItem.TYPE_BIN);
要使用jszip, 首先下载jszip第三方库,下载地址,Egret官方在github上放的:https://github.com/egret-labs/egret-game-library
将jszip放在项目目录下,放在哪你自选,只要配置中添加路径时正确就行了(下图中放在了 lib目录下)。
然后在Egret中引用第三方库,项目目录下egretProperties.json文件中添加
{ "engineVersion": "5.2.12", "compilerVersion": "5.2.12", "template": {}, "target": { "current": "web" }, "urlParams": {}, "modules": [ { "name": "egret" }, { "name": "assetsmanager" }, { "name": "tween" }, { "name": "game" }, { "name": "socket" }, { "name": "promise" }, { "name": "dragonBones" }, { "name": "jszip", "path": "./libs/jszip" } ] }