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"
    }
  ]
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM