2012-09-22 57 views
1

想知道如何用Node j提取tbz文件並保存到磁盤。示例代碼將非常感激。NodeJS提取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' } 

不知道我正確地這樣做。

+1

嘗試使用zlib createUnzip,但返回「errno:-3,代碼:'Z_DATA_ERROR」。我不知道,我是否在正確的道路上。 – TonyTakeshi

+0

如果這是一個bzip的tar文件,我不確定zlib是否支持這種格式。你可能不得不使用像['node-gzbz2'](https://github.com/Woodya/node-gzbz2) – JohnnyHK

+0

這樣的模塊。謝謝。這也讓我很困惑,使用zlib,tar,gzbz等等。不知道哪一個是正確的算法。但是,最終我發現了一個黑客來提取文件。 – TonyTakeshi

回答

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

我暫時接受我的回答,直到更好的一個來。