qiao-zip:nodejs下zip和unzip

【前言】

用nodejs怎么压缩文件为zip,或者解压缩zip文件,有两个比较成熟的npm库:

adm-zip - npm

archiver - npm

但是两者都有一些问题,下面试简介:

admin-zip:nodejs解压缩zip文件:adm-zip_uikoo9的博客-CSDN博客_adm-zip

archiver:nodejs压缩为zip文件:archiver_uikoo9的博客-CSDN博客_nodejs 压缩zip

【qiao-zip】

综上,封装了一个npm包:qiao-zip,qiao-zip - npm

具备以下功能:

1.支持压缩,支持解压缩

2.支持操作文件,支持操作文件夹

3.若目标地址不存在会自动创建

4.不存在中文乱码问题

5.多层压缩解压缩正常

【unzip】

var q = require('qiao-zip');
​
var test = function(){
    var zipFile     = 'd:/test1.zip';
    var destFolder  = 'd:/test2/';
  
    q.unzip(zipFile, destFolder);
};
​
test();

【zipFileSync】

var q = require('qiao-zip');
​
var test = async function(){
    var sourceFile   = 'd:/test.js';
    var destZip      = 'd:/test22.zip';
  
    try{
        var msg = await q.zipFileSync(sourceFile, destZip);
        console.log(msg);
    }catch(e){
        console.log(e);
    }
};
​
test();

【zipFolderSync】

var q = require('qiao-zip');
​
var test = async function(){
    var sourceFolder  = 'd:/test/';
    var destZip       = 'd:/test24.zip';
  
    try{
        var msg = await q.zipFolderSync(sourceFolder, destZip);
        console.log(msg);
    }catch(e){
        console.log(e);
    }
};
​
test();

【zipFile】

var q = require('qiao-zip');
​
var test = function(){
    var sourceFile  = 'd:/test.js';
    var destZip     = 'd:/test22.zip';
  
    q.zipFile(sourceFile, destZip, function(err, msg){
        if(err) throw err;
    
        console.log(msg);
  });
};
​
test();

【zipFolder】

var q = require('qiao-zip');
​
var test = function(){
    var sourceFolder  = 'd:/test/';
    var destZip       = 'd:/test23.zip';
  
    q.zipFolder(sourceFolder, destZip, function(err, msg){
        if(err) throw err;
    
        console.log(msg);
  });
};
​
test();

【test-01】

测试:解压缩,zip文件路径多层级

期望:zip文件路径的多层级不影响解压缩

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = function(){
    var zipFile     = 'd:/qiao-zip/demo01/test.zip';
    var destFolder  = 'd:/';
  
    q.unzip(zipFile, destFolder);
};
​
test();

【test-02】

测试:解压缩,目标文件路径多层级

期望:目标文件路径的多层级不影响解压缩

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = function(){
    var zipFile     = 'd:/qiao-zip/demo02/test.zip';
    var destFolder  = 'd:/qiao-zip/demo02';
  
    q.unzip(zipFile, destFolder);
};
​
test();

【test-03】

测试:解压缩,目标文件路径多层级,且不存在

期望:目标文件路径多层级且不存在不影响解压缩

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = function(){
    var zipFile     = 'd:/qiao-zip/demo03/test.zip';
    var destFolder  = 'd:/qiao-zip/demo99';//这个path不存在
  
    q.unzip(zipFile, destFolder);
};
​
test();

【test-04】

测试:解压缩,zip中文件带有中文名

期望:解压缩后中文文件名不乱码

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = function(){
    var zipFile     = 'd:/qiao-zip/demo04/test.zip';// 这个zip中的文件为test-你好.js
    var destFolder  = 'd:/qiao-zip/demo04';
  
    q.unzip(zipFile, destFolder);
};
​
test();

【test-05】

测试:解压缩,zip中文件夹嵌套

期望:zip中多文件夹嵌套,多文件可以正常解压缩

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = function(){
    var zipFile     = 'd:/qiao-zip/demo05/test.zip';// 这个zip中多文件夹嵌套,多文件,中文名文件
    var destFolder  = 'd:/qiao-zip/demo05';
  
    q.unzip(zipFile, destFolder);
};
​
test();

【test-06】

测试:压缩文件,待压缩文件路径多层级

期望:待压缩文件路径多层级,压缩后不引入

结论:通过

var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFile  = 'd:/qiao-zip/demo06/test.js';
        var destZip     = 'd:/qiao-zip/demo06/test.zip';
​
        await q.zipFileSync(sourceFile, destZip);
    }catch(e){
        console.log(e);
    }
};
​
test();

【test-07】

测试:压缩文件,待压缩文件包含中文

期望:压缩后文件中文无乱码

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFile   = 'd:/qiao-zip/demo07/test-你好.js';
        var destZip      = 'd:/qiao-zip/demo07/test.zip';
​
        await q.zipFileSync(sourceFile, destZip);
    }catch(e){
        console.log(e);
    }
};
​
test();

【test-08】

测试:压缩文件,目标zip路径不存在

期望:可以自动创建

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFile  = 'd:/qiao-zip/demo07/test-你好.js';
        var destZip     = 'd:/qiao-zip/demo98/test.zip';// demo98这个路径不存在
​
        await q.zipFileSync(sourceFile, destZip);
    }catch(e){
        console.log(e);
    }
};
​
test();

【test-09】

测试:压缩文件夹,目标文件夹多层级

期望:可将该文件夹下的所有文件文件夹正确压缩

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFolder  = 'd:/test';// 该路径下多文件夹,多文件等
        var destZip       = 'd:/qiao-zip/demo08/test.zip';
​
        await q.zipFolderSync(sourceFolder, destZip);
    }catch(e){
        console.log(e);
    }
};
​
test();

【test-10】

测试:压缩文件夹,目标文件夹压缩后包一层

期望:压缩文件夹并设置subdir属性生效

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFolder  = 'd:/test';// 该路径下多文件夹,多文件等
        var destZip       = 'd:/qiao-zip/demo09/test.zip';
​
        await q.zipFolderSync(sourceFolder, destZip, 'test');
    }catch(e){
        console.log(e);
    }
};
​
test();

【test-11】

测试:压缩文件夹,目标zip路径不存在

期望:可以自动创建

结论:通过

'use strict';
​
var q = require('../../lib/qiao-zip.js');
​
var test = async function(){
    try{
        var sourceFolder  = 'd:/test';// 该路径下多文件夹,多文件等
        var destZip       = 'd:/qiao-zip/demo97/test.zip';// demo97不存在
​
        await q.zipFolderSync(sourceFolder, destZip, 'test');
    }catch(e){
        console.log(e);
    }
};
​
test();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uikoo9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值