Node.js : Spécifier les fichiers à décompresser avec zlib + tar
Un processus d'installation est le téléchargement d'un .tar.gz
archive, puis extrayez les fichiers dans un répertoire de destination. Cependant, pas tous les fichiers dans l'archive, et je tiens à spécifier quels fichiers doivent être extraits. La naïveté serait de supprimer les fichiers inutiles après l'extraction, mais j'aimerais un "nettoyeur" chemin du filtre et de la place.
Est-ce possible?
L' (pertinent) le code que j'ai pour l'instant est (démonté pour des raisons de lisibilité)
var fs = require('fs');
var tar = require('tar');
var zlib = require('zlib');
var log = console.log;
var tarball = 'path/to/downloaded/archive.tar.gz';
var dest = 'path/to/destination';
fs.createReadStream(tarball)
.on("error", log)
.pipe(zlib.Unzip())
.pipe(tar.Extract({ path: dest }))
.on("end", log);
Merci.
OriginalL'auteur Yanick Rochon | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
Il fonctionne de manière similaire à la
décompressez
module:Bruine de la vérification de type Répertoire. J'ai édité réponse.
bonne prise, même si je semble que vérifier avant d'appeler
mkdirp()
.lol ya duh. fixe. Je suis aussi de voir les fichiers dans l' .tar.gz obtenir endommagé sur le disque après l'extraction. Vous avez déjà vu cela auparavant? Les fichiers sur un disque avec le bon nom et la structure, mais le pot est à l'intérieur de la fiche sont endommagés. En omettant les extraire uniquement les fichiers JS ligne et à l'aide de goudron.Extrait de (), cela n'arrive pas
J'ai utilisé le même code pour extraire les fichiers tar, et il a toujours travaillé pour moi. Si vous avez un exemple de fichier tar pour moi, je serais heureux de prendre un coup d'oeil.
OriginalL'auteur robertklep
Vous pouvez prendre un coup d'oeil à ce post de trouver une bonne solution.
Par ailleurs, dans le zlib-documentation vous verrez que vous pouvez spécifier une "zone tampon" en l'appelant .décompressez().
Je dois lire un fichier extrait du goudron. Quand devrais-je appeler ma fonction de lecture? J'ai essayé onClose mais mon fichier n'est pas entièrement écrit jusqu'alors. Vous pouvez voir mon code.
fs.createReadStream(nom de fichier) .pipe(zlib.Décompressez()) .pipe(nouveau goudron.Parse()) .('entrée', function(entrée) { { var isDir = 'Répertoire' === entrée.type; var fullpath = chemin d'accès.join(dest, entrée.chemin d'accès); var directory = isDir ? fullpath : chemin d'accès.dirname(fullpath); mkdirp(répertoire, function(err) { if (err) de jeter err; if (! isDir) { entrée.pipe(fs.createWriteStream(fullpath) .('erreur', function(e){alert('Erreur');}) ); }});} }).('fermer', function(){setTimeout(readXMLFile(sysObject.path + '\\layout_new.xml'),0);})
OriginalL'auteur Luca Davanzo