NodeJS提取tbz文件并保存到磁盘

时间:2012-09-22 16:26:42

标签: node.js

想知道如何使用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' } 

不确定我是否正确做到了。

2 个答案:

答案 0 :(得分:1)

没有设法找到用于提取tbz文件的节点库,因为我使用zlib,node-tar等进行测试。最终使用'tar'命令来解决这个问题。

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);
});

我暂时接受我的回答,直到更好的回答。

答案 1 :(得分:0)

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

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

fs.createReadStream(sourceFileName)
  .pipe(bz2())
  .pipe(fs.createWriteStream(destinationFileName))