gpt4 book ai didi

Node.js - 压缩/解压缩文件夹

转载 作者:IT老高 更新时间:2023-10-28 22:08:11 25 4
gpt4 key购买 nike

我正在深入研究 node.js 的 Zlib。我能够使用提供的示例 (http://nodejs.org/api/zlib.html#zlib_examples) 压缩和解压缩文件,但找不到更多关于对文件夹执行相同操作的信息?

一种可能性(但我认为是修修补补)是使用 node-zip 模块并一一添加文件夹中的所有文件。但是解压时会遇到问题(这种情况下会丢失文件夹)。

知道如何使用 Node.js 压缩(然后解压缩)整个文件夹(尊重子焊料层次结构)吗?

谢谢。

最佳答案

在@generalhenry 的帮助下,我终于明白了(请参阅有关问题的评论)和

正如评论中提到的,我们需要分两步压缩文件夹:

  1. 将文件夹转换为.tar文件

  2. 压缩.tar文件

为了执行第一步,我需要两个 node.js 模块:

npm install tar
npm install fstream

第一个允许我们创建 .tar 文件。您可以在此处访问源代码 https://github.com/isaacs/node-tar

第二个 Node 模块将帮助我们读取文件夹和写入文件。关于基本的 fs node.js 模块,我不知道是否可以读取目录(我不是在谈论使用 fs 获取数组中的所有文件。 readdir,但处理文件夹中的所有文件及其组织)。

然后,当我将文件夹转换为 .tar 文件时,我可以使用 ZlibGzip() 对其进行压缩。

这是最终代码:

var fstream = require('fstream'),
tar = require('tar'),
zlib = require('zlib');

fstream.Reader({ 'path': 'path/to/my/dir/', 'type': 'Directory' }) /* Read the source directory */
.pipe(tar.Pack()) /* Convert the directory to a .tar file */
.pipe(zlib.Gzip()) /* Compress the .tar file */
.pipe(fstream.Writer({ 'path': 'compressed_folder.tar.gz' })); /* Give the output file name */

这有助于我使用 node.js 压缩整个文件夹

还有 2 件事:

  • 如您所见,tar 模块缺少文档。我希望这将很快得到改进,因为提供的两个示例讨论了如何从 .tar 文件中提取内容。

  • 我使用了 fstream 模块来帮助我处理源目录。这可以使用 fs 绕过吗?我不知道(如果您有想法,请发表评论)。

关于Node.js - 压缩/解压缩文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com