在 NodeJs 中使用 archiver 压缩超大文件夹
在Node.js中,可以使用archiver库来压缩超大文件夹。以下是一个示例代码,展示了如何使用archiver来压缩一个超大文件夹:
首先,安装archiver库:
npm install archiver
1
然后,使用以下代码压缩文件夹:
const fs = require('fs');
const archiver = require('archiver');
function compressFolder(folderPath, outputFilePath) {
const output = fs.createWriteStream(outputFilePath);
const archive = archiver('zip', {
zlib: { level: 9 } // 压缩级别
});
// 监听输出流关闭事件
output.on('close', function() {
console.log(archive.pointer() + ' total bytes');
console.log('压缩完成,输出文件路径:' + outputFilePath);
});
// 监听压缩过程中的警告
archive.on('warning', function(err) {
if (err.code === 'ENOENT') {
// log warning
} else {
// 抛出错误
throw err;
}
});
// 监听压缩过程中的错误
archive.on('error', function(err) {
throw err;
});
// 将输出流与存档关联起来
archive.pipe(output);
// 添加整个文件夹
archive.directory(folderPath, false);
// 完成添加文件
archive.finalize();
}
// 使用示例
compressFolder('path/to/your/folder', 'path/to/output/archive.zip');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
这段代码会创建一个可写流来输出压缩文件,然后使用archiver创建一个zip压缩包,将指定的文件夹添加到压缩包中,并最终写入输出流。这个过程是异步的,你可以在输出流的close事件中得知压缩完成。
上次更新: 2024/04/07, 16:22:38
- 01
- linux 在没有 sudo 权限下安装 Ollama 框架12-23
- 02
- Express 与 vue3 使用 sse 实现消息推送(长连接)12-20