qiao.plugin.zip:nodejs下zip和unzip

【前言】

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

https://www.npmjs.com/package/adm-zip

https://www.npmjs.com/package/archiver

 

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

admin-zip:https://blog.csdn.net/uikoo9/article/details/116381396

archiver:https://blog.csdn.net/uikoo9/article/details/116381493

 

【qiao.plugin.zip】

综上,封装了一个npm包:qiao.plugin.zip,https://www.npmjs.com/package/qiao.plugin.zip

具备以下功能:

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

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

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

4.不存在中文乱码问题

5.多层压缩解压缩正常

 

【unzip】

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

 

【zipFileSync】

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

 

【zipFolderSync】

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

 

【zipFile】

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

 

【zipFolder】

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

 

【test-01】

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

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

结论:通过

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

 

【test-02】

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

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

结论:通过

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

 

【test-03】

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

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

结论:通过

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

 

【test-04】

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

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

结论:通过

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

 

【test-05】

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

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

结论:通过

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

 

【test-06】

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

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

结论:通过

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

 

【test-07】

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

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

结论:通过

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

 

【test-08】

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

期望:可以自动创建

结论:通过

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

 

【test-09】

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

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

结论:通过

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

 

【test-10】

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

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

结论:通过

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

 

【test-11】

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

期望:可以自动创建

结论:通过

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

 

上一篇:CentOS7离线安装unzip解压工具


下一篇:linux unzip 解压中文文件 变乱码