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))