2013-11-14 2 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로 추출하지만 위의 코드는 targzFile에서 단일 파일을 추출하려고합니다.
노드 js를 사용하여 tar.gz 아카이브에서 단일 파일을 추출하는 방법

미리 감사드립니다.

+0

그것은 보이지 않는 : 여기 archive.tar.gz 아카이브 에서 documents.json라는 파일을 추출 완벽한 예입니다 tar.gz] (https://github.com/cranic/node-tar.gz/blob/master/src/targz.coffee). '.extract'로 어떤 일이 일어나는지 보려면 68 행을 시작하는 코드를보십시오. –

답변

1

답변에 관심이있는 사용자는 스트림 및 모듈 tar-stream을 사용할 수 있습니다. 당신이 노드 -의 [소스보고 해당 옵션을 가지고있는 것처럼

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