1

想知道如何使用 Node JS 提取 tbz 文件并保存到磁盘。示例代码将不胜感激。

尝试过这样的事情:

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

var file = fs.createReadStream('/tmp.tbz');
var zip = file.pipe(zlib.createUnzip());

zip.on("data", function(data) {
  console.log(data);
});

zip.on("error",function(error){
    console.log(error);
});

但最终得到:

{ [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' } 

不确定我是否正确地做到了这一点。

4

2 回答 2

1

没有找到用于提取 tbz 文件的节点库,因为我使用 zlib、node-tar 等进行了测试。最终使用 'tar' 命令得出了这个 hack。

var util  = require('util'),
    spawn = require('child_process').spawn,
    ls    = spawn('tar', ['-C','/home/tony/Desktop','-xvf', '/home/tony/Desktop/tmp.tbz']);

ls.stdout.on('data', function (data) {
  console.log(data);
});

ls.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

我暂时接受我的答案,直到更好的答案出现。

于 2012-09-23T05:29:26.353 回答
0

它似乎.tbz是 bzip2,因此您可以使用此模块:https://www.npmjs.com/package/unbzip2-stream提取数据。

我能够提取这样的.tbz文件:

fs.createReadStream(sourceFileName)
  .pipe(bz2())
  .pipe(fs.createWriteStream(destinationFileName))
于 2019-05-06T19:45:20.050 回答