zoukankan      html  css  js  c++  java
  • 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"
        }
      ]
    }
  • 相关阅读:
    Asp.net Core 系列之--5.认证、授权与自定义权限的实现
    Asp.net Core 系列之--4.事务、日志及错误处理
    Asp.net Core 系列之--3.领域、仓储、服务简单实现
    Asp.net Core 系列之--2.ORM初探:Dapper实现MySql数据库各类操作
    Asp.net Core 系列之--1.事件驱动初探:简单事件总线实现(SimpleEventBus)
    Cocos2d-x项目创建
    Cocos2d-x编译Android环境
    Linux 之 RPM
    Channels实现扫码登录
    SQLALchemy中关于复杂关系表模型的映射处理
  • 原文地址:https://www.cnblogs.com/PigpigRun/p/10420074.html
Copyright © 2011-2022 走看看