Maison  >  Article  >  interface Web  >  Recommandations pour certaines bibliothèques pratiques de compression et de décompression de fichiers JavaScript sur les compétences GitHub_javascript

Recommandations pour certaines bibliothèques pratiques de compression et de décompression de fichiers JavaScript sur les compétences GitHub_javascript

WBOY
WBOYoriginal
2016-05-16 15:10:493429parcourir

L'intégralité du dossier d'archivage et de désarchivage existant doit être utilisé dans le projet Lors de la recherche d'une solution, j'ai essayé certaines bibliothèques populaires, principalement adm-zip, JSZip, archiver, etc.

1.Utilisez adm-zip
adm-zip prend en charge la fonction d'archivage et de désarchivage d'un ou plusieurs fichiers ou d'un dossier entier, ce qui est très simple et pratique à utiliser.

  var adm_zip = require('adm-zip');

  //creating archives
  var zip = new adm_zip(); 
  zip.addLocalFolder('archiver'); 
  zip.writeZip('adm/adm-archive.zip'); 

  //extracting archives 
  var unzip = new adm_zip('adm/adm-archive.zip'); 
  unzip.extractAllTo("adm/adm-unarchive/", /*overwrite*/true);

Avantages et inconvénients :
1. Il réalise simultanément la compression et la décompression et peut fonctionner sur des fichiers ou des dossiers existants tant que le chemin est fourni. Il implémente de nombreuses interfaces et est facile à utiliser.
2. Il y a un bug en soi, et parfois le fichier décompressé ne peut pas être restauré dans le fichier d'origine. Espérons que ces bugs seront corrigés au fil du temps.


2. UtilisezJSZip
Lors de l'utilisation de cette bibliothèque, vous devez ajouter les fichiers un par un à l'objet zip, et vous devez ajouter le contenu manuellement, puis utiliser l'opération d'écriture de fichier pour convertir l'objet zip dans la mémoire en stockage physique. Donc, s’il s’agit d’un dossier entier, c’est très gênant et il faut parcourir le dossier.

var JSZip = require("jszip");
var fs = require("fs");

var zip = new JSZip();

var file_content = fs.readFileSync('archive/a.txt');


zip.file("a.txt",file_content);

var data = fs.readFileSync("archive/img/pic.jpeg");
zip.file("img/pic.jpeg", data, {base64: true});

var zipfolder = zip.generate({type:"nodebuffer"});

fs.writeFile("jszip.zip", zipfolder, function(err) {
  if (err) throw err;
});

Il existe également une méthode de dossier dans JSZip, mais elle n'est utilisée que pour changer le chemin virtuel à l'intérieur de l'objet zip. Par exemple, zip.folder("img").file('a.txt') doit être ajouté. un sous-répertoire img dans le zip, créez un.txt ci-dessous, l'effet est équivalent à zip.file("img/a.txt"). Il convient également de noter ici que le contenu du fichier doit être ajouté manuellement. S'il s'agit simplement de zip.file("a.txt"); il crée uniquement un fichier txt avec un contenu vide dans l'objet zip, et uniquement. existe en mémoire, il doit être écrit dans le fichier avant d'être réellement enregistré sur le disque.

Avantages et inconvénients :
1. Il est plus adapté pour convertir certaines données reçues en temps réel en zip. 2. Il n'est pas pratique d'exploiter les dossiers existants. Vous devez ajouter le contenu à l'objet zip un par un, puis le convertir en fichiers.
3. Une grande partie du codage nécessite une attention particulière.
4. Uniquement fonction de compression.


3. Utilisez archiveur et décompressez
Cette combinaison est la dernière que j'ai utilisée. Elle est plus fiable et plus facile à utiliser. L'archiveur est très puissant et prend en charge le format tar zip. Il vous suffit de fournir le chemin pour compresser le dossier existant. Compression :

var fs = require('fs');
var archiver = require('archiver');

var output = fs.createWriteStream('archiver-unzip.zip');
var archive = archiver('zip');

archive.on('error', function(err){
  throw err;
});

archive.pipe(output);
archive.bulk([
  { src: ['archiver/**']}
]);
archive.finalize();

Décompresser :

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));

Avantages et inconvénients :
1. Il a été essayé pendant longtemps et comporte moins de bugs.
2. Facile à utiliser, pas besoin de parcourir les dossiers.
3. Ils fournissent uniquement la compression ou la décompression, pas les deux fonctions. (Donc adm-zip est en fait très utile, mais les bugs sont un défaut...)

Ce ne sont là que quelques-unes des bibliothèques que j'ai trouvées hier. Vous pouvez recommander d'autres bibliothèques

.
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn