nodejs系列(8)文件的压缩和解压

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zeping891103/article/details/79268972

zip压缩解压                                               

zip格式压缩需要引入'archiver'模块,其github地址如下:https://github.com/archiverjs/node-archiver

cnpm install archiver
zip压缩代码示例:
// 请求模块
var fs = require('fs');
var archiver = require('archiver');

// 创建生成的压缩包路径
var output = fs.createWriteStream(__dirname + '/example.zip');
var archive = archiver('zip', {
	zlib: {
		level: 9
	} // 设置压缩等级
});

// 'close' 事件监听
output.on('close', function() {
	console.log(archive.pointer() + ' total bytes');
	console.log('archiver has been finalized and the output file descriptor has closed.');
});

// 'end' 事件监听
output.on('end', function() {
	console.log('Data has been drained');
});

// 'warnings' 事件监听
archive.on('warning', function(err) {
	if(err.code === 'ENOENT') {
		// 打印警告
	} else {
		// throw error
		throw err;
	}
});

// 'error' 事件监听
archive.on('error', function(err) {
	throw err;
});

// pipe 方法
archive.pipe(output);

// 添加一个流文件
var file1 = __dirname + '/file1.txt';
archive.append(fs.createReadStream(file1), {
	name: 'file1.txt'
});

// 添加一个字符串
archive.append('string cheese!', {
	name: 'file2.txt'
});

// 添加一个buffer
var buffer3 = Buffer.from('buff it!');
archive.append(buffer3, {
	name: 'file3.txt'
});

// 添加一个文件
archive.file('file1.txt', {
	name: 'file4.txt'
});

// 添加一个目录,且文件包含在新目录new-subdir中
archive.directory('./subdir/', 'new-subdir');

// 添加一个目录,且文件放在根目录
archive.directory('./subdir/', false);

// 添加一个目录下后缀名固定的某些文件
archive.glob('subdir/*.txt');

//执行
archive.finalize();
zip格式解压需要引入adm-zip
cnpm install adm-zip
解压代码示例:
var adm_zip = require('adm-zip'); //需要引入adm-zip包
var unzip = new adm_zip('./api/example.zip');
unzip.extractAllTo("./api/example/", true);


zlib压缩解压                                              

zlib压缩生成的文件后缀名为.gz,常用于UNIX系统,也可以在win下直接解压。

zlib压缩示例:

var fs = require("fs");
var zlib = require('zlib');

// 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
	.pipe(zlib.createGzip())
	.pipe(fs.createWriteStream('input.gz'));
console.log("文件压缩完成。");
zlib解压示例:
var fs = require("fs");
var zlib = require('zlib');

// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream('input.gz')
	.pipe(zlib.createGunzip())
	.pipe(fs.createWriteStream('input.txt'));
console.log("文件解压完成。");


猜你喜欢

转载自blog.csdn.net/zeping891103/article/details/79268972