压缩与解压缩库 compressing 使用指南
安装指南
在您的Node.js项目中集成compressing
库非常简单,您只需执行以下命令:
npm install compressing
这将下载并添加compressing
到您的项目依赖中。
项目的使用说明
单文件压缩
以gzip为例,tar、tgz、zip操作类似。
承诺(Promise)风格
const compressing = require('compressing');
// 压缩文件至gzip格式
compressing.gzip.compressFile('源文件路径', '目标压缩文件路径.gz')
.then(() => console.log('压缩完成'))
.catch(errorHandler);
// 也可以处理文件缓冲
compressing.gzip.compressFile(fileBuffer, '目标压缩文件路径.gz')
.then(() => console.log('压缩完成'))
.catch(errorHandler);
// 或者处理流
compressing.gzip.compressFile(fileStream, '目标压缩文件路径.gz')
.then(() => console.log('压缩完成'))
.catch(errorHandler);
流(Stream)风格
const compressing = require('fs').createWriteStream;
const gzipStream = new compressing.gzip.FileStream({ source: '源文件路径' });
gzipStream.on('error', errorHandler);
gzipStream.pipe(fs.createWriteStream('目标压缩文件路径.gz')).on('error', errorHandler);
// 使用pump处理错误更简洁
const pump = require('pump');
pump(fs.createReadStream('源文件路径'), new compressing.gzip.FileStream(), fs.createWriteStream('目标路径.gz'), errorHandler);
目录压缩
由于gzip仅支持单文件压缩,目录应考虑使用tar进行压缩。
compressing.tar.compressDir('要压缩的目录路径', '目标.tar')
.then(() => console.log('目录压缩完成'))
.catch(errorHandler);
// 或者流方式
const tarStream = new compressing.tar.Stream();
tarStream.addEntry('要压缩的目录路径');
tarStream.on('error', errorHandler)
.pipe(fs.createWriteStream('目标.tar'))
.on('error', errorHandler);
文件解压缩
同样提供Promise和流两种方式,下面展示Promise风格解压tgz文件的例子:
const compressing = require('compressing');
compressing.tgz.uncompress('压缩文件路径.tgz', '解压后的目录')
.then(() => console.log('解压缩完成'))
.catch(errorHandler);
对于流,处理目录结构时需要额外注意每个条目:
const compressing = require('compressing');
const mkdirp = require('mkdirp');
new compressing.tgz.UncompressStream({ source: '压缩文件路径.tgz' })
.on('entry', header => {
if (header.type === 'file') {
new compressing.tgz.UncompressStream()
.pipe(fs.createWriteStream(path.join('目标目录', header.name)))
.on('error', errorHandler);
} else if (header.type === 'directory') {
mkdirp(path.join('目标目录', header.name), errorHandler);
}
})
.on('error', errorHandler)
.on('finish', () => console.log('解压缩完成'));
项目API使用文档
- compressFile: 方便地压缩单个文件,支持不同压缩类型。
- compressDir: 压缩整个目录,tar/tgz/zip格式适用,注意gzip不直接支持目录压缩。
- uncompress: 解压缩文件,自动识别tgz/tar/zip/gzip,并解压到指定目录或流。
- FileStream: 用于压缩单个文件的流接口,适用于进阶流式处理。
- UncompressStream: 解压缩操作的流接口,尤其适合动态处理压缩包内容。
项目安装方式
已包含于安装指南部分,再次强调,通过npm install compressing
即可引入此库到Node.js项目中。
以上即是关于compressing
库的基本使用介绍,涵盖了从安装、基本使用、特定功能演示到API概览等全方位指导,确保用户能够高效地利用该库进行文件的压缩和解压缩操作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考