Recommandations associées : "Tutoriel nodejs"
Le fichier Zip est un format de fichier compressé couramment utilisé. La plupart des développeurs finissent par utiliser des archives tar au lieu de fichiers zip. Mais il existe des situations dans lesquelles vous devez utiliser des fichiers zip, comme le téléchargement de fonctions vers AWS Lambda. Dans cet article, je vais montrer comment créer et extraire des fichiers zip avec le module adm-zip npm .
Exportez une AdmZip
classe depuis le module adm-zip npm. Une instance de AdmZip
correspond à un fichier zip . Si vous souhaitez créer un nouveau fichier zip, vous devez appeler new AdmZip()
sans aucun argument :
const AdmZip = require('adm-zip'); const file = new AdmZip();
Les fichiers et répertoires peuvent être ajoutés à file
de différentes manières. Les fichiers et répertoires peuvent être ajoutés à partir du système de fichiers par nom de fichier en utilisant file.addLocalFile()
et file.addLocalFolder()
. Par exemple, le code suivant montre comment ajouter un fichier package.json
et un répertoire node_modules
à un fichier zip :
const AdmZip = require('adm-zip'); const file = new AdmZip(); file.addLocalFile('./package.json'); //第二个node_modules 参数是 zip 中目录的路径。 //如果没有第二个参数,则`./node_modules`中的每个目录都将是压缩文件中的顶级目录 file.addLocalFolder('./node_modules', 'node_modules');
Vous pouvez ensuite écrire dans le fichier en utilisant l'une des deux méthodes suivantes :
//写入zip文件的第一种方法:将其转换为缓冲区并使用`fs` const fs = require('fs'); fs.writeFileSync('output.zip', file.toBuffer()); // 另一种写入 zip 文件的方法:writeZip() file.writeZip('output.zip');
Après avoir écrit le fichier output.zip
, vous devriez pouvoir l'ouvrir dans votre programme de décompression zip personnalisé. Vous trouverez ci-dessous le fichier ouvert dans le gestionnaire d'archives par défaut de Xubuntu engrampa. Le deuxième argument de
addLocalFile()
et addLocalFolder()
est le chemin pour placer le contenu du fichier ou du répertoire dans le zip. Par exemple, si vous souhaitez placer à la fois package.json
et node_modules
sous le répertoire project
, vous pouvez exécuter le script suivant :
const AdmZip = require('adm-zip'); const file = new AdmZip(); file.addLocalFile('./package.json', 'project'); file.addLocalFolder('./node_modules', 'project/node_modules'); const fs = require('fs'); fs.writeFileSync('output.zip', file.toBuffer());
Les fichiers peuvent être ajoutés à partir du tampon Node.js d'origine à l'aide du file.addFile()
méthode. Voici comment ajouter un fichier texte contenant la chaîne Hello,World
à un fichier zip sans créer le fichier sur le système de fichiers.
const AdmZip = require('adm-zip'); const file = new AdmZip(); file.addFile('hello.txt', Buffer.fromString('Hello, World')); const fs = require('fs'); fs.writeFileSync('output.zip', file.toBuffer());
Si vous transmettez des arguments au constructeur AdmZip
, adm-zip analysera le fichier au chemin indiqué. Voici comment tout extraire d'un fichier output.zip
dans un répertoire output
.
const AdmZip = require('adm-zip'); const file = new AdmZip('./output.zip'); file.extractAllTo('./output');
Vous pouvez également utiliser file.extractEntryTo()
pour extraire des fichiers individuels à partir de fichiers zip. Par exemple, voici comment extraire un fichier hello.txt
d'un fichier zip et l'écrire dans le répertoire actuel :
const AdmZip = require('adm-zip'); const file = new AdmZip('./output.zip'); file.extractEntryTo('hello.txt', './');
Vous pouvez également utiliser addLocalFile()
, addLocalFolder()
et addFile()
avec des fichiers existants.
Les fichiers Zip sont souvent utilisés pour la compression. Certains services, tels qu'AWS Lambda, nécessitent que vous utilisiez des fichiers zip. Heureusement, le module adm-zip npm facilite la création et l'extraction de fichiers zip directement depuis Node.js.
Adresse originale en anglais : http://thecodebarbarian.com/working-with-zip-files-in-node-js.html
Auteur : Valeri Karpov
Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!