我正在尝试在 node.js 中提取一些 .tar.bz2 文件。我在这里,在 npm,github 和谷歌搜索这个,但没有现成的解决方案。
我的文件每个约为 25mb,所以我认为最好的方法是在带有tar
模块的管道流中(类似于你如何使用来自 node.js 的内置 ZLib 库的 Gunzip 用于 .tar.gz)。这样我也可以使用request
.
我找到了https://github.com/Woodya/node-gzbz2(它有很多重命名的叉子,比如gzbz
),但它们需要使用node-gyp
. 我不想使用这些,因为我正在构建的模块必须在 linux、mac 和 windows 上使用 npm 并且不依赖于 python 等外部库而无需麻烦地工作。
或者,我查看https://github.com/cscott/seek-bzip(及其来源),我喜欢它是纯 javascript 的方式,但它只解码缓冲区。
有人可以在去这里的路上给我建议吗?
编辑:作者seek-bzip
创建了一个包装器,将他的同步流转换为异步流,但这个修复取决于node-fibers
哪个再次使用node-gyp
哪个在我的情况下是不可取的。见https://github.com/cscott/seek-bzip/issues/1
edit2:我仍在寻找跨平台解决方案,但这是使用 CLI 命令执行此操作的快速方法:
var cmd = 'bunzip2 -c ' + sourceFile + ' | (cd ' + targetDir + '; tar -xf -)';
require('child_process').exec(cmd, function (err, stdout, stderr) {
if (err) {
// bad
}
// yea!
});