zoukankan      html  css  js  c++  java
  • nodejs rar/zip加密压缩、解压缩

    1、shell/cmd命令行压缩解压缩

    (1)zip压缩解压缩

    zip压缩:zip -rP{密码} <目标文件.zip> <源文件> //默认覆盖现有文件

    zip解压缩:zip -oP{密码} <源文件.zip> //默认覆盖现有文件

    (2)rar压缩解压缩

    说明: linux需要下载rarlinux,然后压缩,make编译后,即可使用。

    rar压缩:rar a -p{密码} <目标文件.rar> <源文件> -y //默认覆盖现有文件

    例如:rar a -p123456 abc.rar abc

    rar解压缩:rar x -p{密码 } <源文件.rar> -y //保留源文件路径,默认覆盖现有文件

    例如:rar x -p123456 abc.rar -y

    2、如何通过nodejs执行shell/cmd命令

    说明:通过child_process模块

    var exec = require('child_process').exec;  //引入child_process模块
    
    exports.execCmd = function(cmdStr,next){
        exec(cmdStr,function(err,stdout,stderr){
            next({
                err:err,
                stdout:stdout,
                stderr:stderr
            });
        });
    }

     

    3、封装成方法

    rar解压缩:

    /*
    方法名:rar解压缩
    参数:
     password
     zipFilePath
     tgtFilePath
    例如:
     var password ="20170313",
     zipFilePath ="D:/test/18_20170313.rar",
     srcFilePath = "D:/test/18_20170313";
     cmdStr = "rar x -P20170313 D:	est18_20170313.rar D:	est18_20170313 -y"
    
     * */
    var fs = require("fs");
    var exec = require('child_process').exec;
    
    exports.unrar = function(param,next){
        console.log("param:",param);
        var cmdStr = "rar x -P"+param.password+" "+param.zipFilePath+" "+param.tgtFilePath+" -y";
        console.log("cmd:",cmdStr);
        fs.exists(param.tgtFilePath, function(exists) {  //判断路径是否存在
            //console.log(">> exists:",exists);
            if(exists) {
                exec(cmdStr,function(err,stdout,stderr){  //执行命令行
                    fs.readdir(param.filesPathInPro,next);
                });
            } else {
                fs.mkdir(param.tgtFilePath,function(){  //创建目录
                    exec(cmdStr,function(err,stdout,stderr){  //执行命令行
                        fs.readdir(param.filesPathInPro,next);
                    });
                });
            }
        });
    }
     

    rar压缩:

    /*
    方法名:rar压缩
    参数:
    password
    zipFilePath
    srcFilePath
    例如:
    var password ="20170313",
    zipFilePath ="D:/test/18_20170313.rar",
    srcFilePath = "D:/test/18_20170313";
    cmdStr ="rar a -ep -P20170313 D:	est18_20170313.rar D:	est18_20170313"
     * */
    
    var fs = require("fs");
    var exec = require('child_process').exec;
    
    exports.rar = function(param,next){
        var cmdStr = 'rar a -ep -P'+param.password+' '+param.zipFilePath+' '+param.srcFilePath+' -y';
        console.log(">> cmdStr:",cmdStr);
        fs.exists(param.srcFilePath, function(exists) {  //判断路径是否存在
            if(exists) {
                exec(cmdStr,next);
            } else {
                next({
                    code:400,
                    msg:"源文件找不到"
                })
            }
        });
    }
     
  • 相关阅读:
    js中当call或者apply传入的第一个参数是null/undefined时,js函数内执行的上下文环境是什么?
    闭包的实现原理和作用以及堆栈溢出和内存泄漏原理和相应解决办法
    JavaScript的作用域和作用域链
    词法作用域和动态作用域
    理解 es6 中class构造以及继承的底层实现原理
    new一个对象的详细过程,手动实现一个 new操作符
    实现继承的几种方式以及他们的优缺点
    理解JavaScript的执行上下文栈,可以应用堆栈信息快速定位问题
    原型和原型链-instanceof的底层实现原理
    js判断变量未定义
  • 原文地址:https://www.cnblogs.com/wuwanyu/p/7018714.html
Copyright © 2011-2022 走看看