2013-11-14 96 views
2
var targz = require('tar.gz'); 
var extract = new targz().extract(targzFile , destnDir, function(err){ 
if(err) 
    console.log(err); 
console.log('The extraction has ended :'+counter); 
}); 

上面的代碼中提取targzFile到destnDir提取tar.gz壓縮單個文件,但是我想從targzFile提取單個文件。
如何使用節點JS

在此先感謝。

+0

它看起來並不像你這樣的選擇看[源節點 - tar.gz的](https://github.com/cranic/node-tar.gz/blob/master/src/targz.coffee)。查看第68行開始的代碼,看看'.extract'發生了什麼。 –

回答

1

對於任何對此答案感興趣的人,都可以使用流和模塊tar-stream。這裏是提取一種叫做documents.json從存檔archive.tar.gz文件的完整例子:

var tar = require('tar-stream'); 
var fs = require('fs'); 
var zlib = require('zlib'); 

var extract = tar.extract(); 
var data = ''; 

extract.on('entry', function(header, stream, cb) { 
    stream.on('data', function(chunk) { 
    if (header.name == 'documents.json') 
     data += chunk; 
    }); 

    stream.on('end', function() { 
     cb(); 
    }); 

    stream.resume(); 
}); 

extract.on('finish', function() { 
    fs.writeFile('documents.json', data); 
}); 

fs.createReadStream('archive.tar.gz') 
    .pipe(zlib.createGunzip()) 
    .pipe(extract);