Heim > Web-Frontend > js-Tutorial > Wie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung

Wie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung

青灯夜游
Freigeben: 2020-11-26 17:54:30
nach vorne
5023 Leute haben es durchsucht

Wie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung

Verwandte Empfehlungen: „nodejs-Tutorial

Zip-Datei ist ein häufig verwendetes komprimiertes Dateiformat. Die meisten Entwickler verwenden letztendlich Tarballs anstelle von ZIP-Dateien. Es gibt jedoch Situationen, in denen Sie ZIP-Dateien verwenden müssen, z. B. beim Hochladen von Funktionen in AWS Lambda. In diesem Artikel werde ich zeigen, wie man ZIP-Dateien mit dem adm-zip npm-Modul erstellt und extrahiert.

Erstellen Sie eine Zip-Datei.

Exportieren Sie eine AdmZip-Klasse aus dem adm-zip npm-Modul. Eine Instanz von AdmZip entspricht eine Zip-Datei AdmZip 类。 AdmZip的实例对应于一个zip文件。如果想要创建一个新的 zip 文件,在调用 new AdmZip() 时不应带任何参数:

const AdmZip = require('adm-zip');

const file = new AdmZip();
Nach dem Login kopieren

可以通过多种方式将文件和目录添加到 file。可以用 file.addLocalFile()file.addLocalFolder() 通过文件名从文件系统添加文件和目录。例如下面的代码演示了怎样把 package.json 文件和 node_modules 目录添加到 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');
Nach dem Login kopieren

然后,你可以使用下面两种方法中的一个写入文件:

//写入zip文件的第一种方法:将其转换为缓冲区并使用`fs`
const fs = require('fs');

fs.writeFileSync('output.zip', file.toBuffer());

// 另一种写入 zip 文件的方法:writeZip()
file.writeZip('output.zip');
Nach dem Login kopieren

写入output.zip 文件后,你应该能够在制定的 zip 解压缩程序中打开它。下面是在 Xubuntu 的默认存档管理器 engrampa 中打开的文件。

Wie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung

addLocalFile()addLocalFolder() 的第二个参数是将文件或目录内容放入zip的路径。例如,如果要将 package.jsonnode_modules 都放在 project 目录下,则可以运行以下脚本:

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());
Nach dem Login kopieren

可以用 file.addFile() 方法从原始 Node.js 缓冲区添加文件。以下是不在文件系统上创建文件的情况下,将包含字符串 Hello,World 的文本文件添加到 zip 文件中的方法。

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());
Nach dem Login kopieren

使用现有文件

如果你将参数传递给 AdmZip 构造函数,则adm-zip将在给定路径下解析文件。下面是将所有内容从 output.zip 文件提取到目录 output 的方法。

const AdmZip = require('adm-zip');

const file = new AdmZip('./output.zip');

file.extractAllTo('./output');
Nach dem Login kopieren

也可以用 file.extractEntryTo() 从 zip 文件中提取单个文件。例如,下面是从 zip 文件中拉出 hello.txt 文件并将其写入当前目录的方法:

const AdmZip = require('adm-zip');

const file = new AdmZip('./output.zip');

file.extractEntryTo('hello.txt', './');
Nach dem Login kopieren

你也可以对现有文件使用 addLocalFile()addLocalFolder()addFile(). Wenn Sie eine neue ZIP-Datei erstellen möchten, sollten Sie new AdmZip() ohne Parameter aufrufen:

rrreee

Es gibt viele Möglichkeiten, Dateien und Verzeichnisse zum file-Code hinzuzufügen >. Dateien und Verzeichnisse können aus dem Dateisystem nach Dateinamen mit file.addLocalFile() und file.addLocalFolder() hinzugefügt werden. Der folgende Code zeigt beispielsweise, wie die Datei package.json und das Verzeichnis node_modules zur ZIP-Datei hinzugefügt werden:

rrreee

Anschließend können Sie eine der folgenden Methoden verwenden Zwei Methoden: Schreiben der Datei:

rrreee
Nachdem Sie die Datei output.zip geschrieben haben, sollten Sie sie in Ihrem benutzerdefinierten Zip-Dekomprimierungsprogramm öffnen können. Unten ist der Standard-Archivmanager in Xubuntu engrampa

-Dateien eröffnet in .

Wie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung

addLocalFile() und addLocalFolder() ist der Pfad zum Einfügen der Datei- oder Verzeichnisinhalte in die ZIP-Datei. Wenn Sie beispielsweise sowohl package.json als auch node_modules im Verzeichnis project platzieren möchten, können Sie das folgende Skript ausführen:

rrreee Sie können die Methode file.addFile() verwenden, um eine Datei aus dem ursprünglichen Node.js-Puffer hinzuzufügen. So fügen Sie einer ZIP-Datei eine Textdatei mit der Zeichenfolge Hello, World hinzu, ohne eine Datei im Dateisystem zu erstellen. rrreee

Vorhandene Datei verwenden 🎜Wenn Sie Argumente an den AdmZip-Konstruktor übergeben, analysiert adm-zip die Datei im angegebenen Pfad. So extrahieren Sie den gesamten Inhalt aus der Datei output.zip in das Verzeichnis output. 🎜rrreee🎜Sie können auch file.extractEntryTo() verwenden, um einzelne Dateien aus ZIP-Dateien zu extrahieren. So ziehen Sie beispielsweise die Datei hello.txt aus der ZIP-Datei und schreiben sie in das aktuelle Verzeichnis: 🎜rrreee🎜Sie können auch addLocalFile() für eine verwenden vorhandener Dateicode>, addLocalFolder() und addFile(). 🎜🎜Zusammenfassung🎜🎜Zip-Dateien werden häufig zur Komprimierung verwendet. Für einige Dienste, wie z. B. AWS Lambda, müssen Sie ZIP-Dateien verwenden. Glücklicherweise macht es das Modul adm-zip npm einfach, ZIP-Dateien direkt aus Node.js zu erstellen und zu extrahieren. 🎜🎜🎜Englische Originaladresse: http://thecodebarbarian.com/working-with-zip-files-in-node-js.html🎜🎜Autor: Valeri Karpov🎜🎜🎜Weitere Programmierkenntnisse finden Sie unter:🎜 Programmiervideo 🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonWie erstelle und entpacke ich Zip-Dateien in Node.js? Methodeneinführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage