【nodeJS】文件压缩

demo(z2.js)

var fs      = require('fs');
var path    = require('path');
var archiver  = require('archiver');
find()
function find(){
    var all=fs.readdirSync("./")
    var i=0;
    var si=setInterval(()=>{
        process.stdout.write(i+"/"+all.length+"\r")
        var s=all[i];
        arr=s.split(".gltf");
        //if(arr.length>1)
            zip(s, arr[0]+".zip", (s)=> {})
        i++;
        if(i===all.length)clearInterval(si)
    },1)
}
function zip(url, name, cb){
    // init
    var output = fs.createWriteStream(name);//创建数据流
    output.on('close',()=> cb('finish'));//创建完成
    // zip
    var archive = archiver('zip', {zlib: { level: 9 }});//设置压缩格式和等级
    archive.on('error', err=> cb(err));
    archive.pipe(output);
    if(fs.statSync(url).isFile()) archive.file(url, {name : path.basename(url)});
    else archive.directory(url, url);//archive.directory(url, false);
    archive.finalize();
}

一、无密码压缩
参考:https://blog.csdn.net/uikoo9/article/details/116381493

var fs      = require('fs');
var path    = require('path');
var archiver  = require('archiver');
zip("zipout", "test.zip", (s)=>console.log(s))
function zip(url, name, cb){
    // init
    var output = fs.createWriteStream(name);//创建数据流
    output.on('close',()=> cb('finish'));//创建完成
    // zip
    var archive = archiver('zip', {zlib: { level: 9 }});//设置压缩格式和等级
    archive.on('error', err=> cb(err));
    archive.pipe(output);
    if(fs.statSync(url).isFile()) archive.file(url, {name : path.basename(url)});//文件
    else archive.directory(url, url);//文件夹//archive.directory(url, false);
    archive.finalize();
}

二、有密码压缩
1.将文件压缩为".zip"格式
参考:http://t.zoukankan.com/wuwanyu-p-7018714.html

var password="{123}"
var path1="./zipin/";
var path2="./zipout/";

var fs = require('fs');
function getNames() {
    var result=[]
    fs.readdirSync(path1).forEach(function (s) {
        result.push(s);
    });
    return result;
}
var names=getNames();

var cmd=require('node-cmd');
for(var i=0;i<names.length;i++){
	n1=path2+names[i]+'.zip';
	n2=path1+names[i];
	console.log('zip -rP'+password+' '+n1+'  '+n2);
	cmd.run('zip -rP'+password+' '+n1+'  '+n2);
}

2.解压文件
文件解压工具:https://download.csdn.net/download/liuzhicheng1845/20028217
参考:https://www.cnblogs.com/gcgc/p/10613155.html

------------解压无密码文件

var password="{123}"
var path="./zipout/";

var fs = require('fs');
function getNames() {
    var result=[]
    fs.readdirSync(path).forEach(function (name) {
        var arr=name.split(".")
        if(arr.length>1&&arr[arr.length-1]==="zip")
            result.push(name);
    });
    return result;
}
var names=getNames();

var cmd=require('node-cmd');
for(var i=0;i<names.length;i++){
	n1=path+names[i];
	cmd.run('unzip '+n1);
}

代码中没有指定解压的目标路径,如果按照上文中的压缩方式,数据解压后会被放入"./zipin/"目录下。

------------解压无密码文件

var compressing=require("compressing")
compressing.zip.uncompress('a2.zip', '')
	.then(()=> console.log('success'))
	.catch(err => console.error(err))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值