Cara menggunakan arkib dalam nodejs

WBOY
Lepaskan: 2022-06-29 16:00:54
asal
2433 orang telah melayarinya

Dalam nodej, pengarkib digunakan untuk memampatkan dan membungkus beberapa fail ke dalam pakej termampat dalam format zip atau format tar ialah modul yang boleh melaksanakan fungsi pembungkusan di seluruh platform digunakan Pernyataan "npm install archiver" memasang modul sebelum digunakan.

Cara menggunakan arkib dalam nodejs

Persekitaran pengendalian artikel ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.

Cara menggunakan arkib dalam nodejs

Kadangkala kami perlu memampatkan dan membungkus beberapa fail ke dalam pakej termampat dalam format zip atau format tar, atau kami juga mungkin perlu membungkus direktori. Dalam Node.js, anda boleh menggunakan pengarkib pakej pihak ketiga untuk melaksanakan operasi.

archiver ialah modul yang boleh merealisasikan fungsi pembungkusan merentas platform dalam nodejs Ia boleh membuat pakej zip dan tar Ia adalah modul pihak ketiga yang agak mudah digunakan.

Pasang modul arkib sebelum digunakan.

Kod adalah seperti berikut:

npm install archiver
Salin selepas log masuk

Pengenalan:

// 由于需要读取文件所以需要fs模块,也必须导入
const fs = require('fs');
const archiver = require('archiver');
Salin selepas log masuk

Gunakan

Penggunaan asas adalah seperti berikut:

< .
// 第一步,导入必要的模块
const fs = require(&#39;fs&#39;);
const archiver = require(&#39;archiver&#39;);

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver(&#39;zip&#39;, {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩指定文件
var stream = fs.createReadStream(__dirname + "/hello.txt");// 读取当前目录下的hello.txt
archive.append(stream, {name: &#39;hello.txt&#39;});

// 第五步,完成压缩
archive.finalize();
Salin selepas log masuk


Cara menggunakan arkib dalam nodejsContoh

Mampatkan satu fail

Fail mampat boleh dikendalikan menggunakan

dan

. archive.append()archive.file()API untuk memampatkan satu fail adalah seperti berikut:

Contoh lengkapnya adalah seperti berikut:
// 添加一个文件到压缩包,通过可写流的方式读取数据附加文件
const file1 = __dirname + &#39;/file1.txt&#39;;
archive.append(fs.createReadStream(file1), { name: &#39;file1.txt&#39; });

//添加一个文件到压缩包,通过将字符串写入到文件的方式附加文件
archive.append(&#39;string cheese!&#39;, { name: &#39;file2.txt&#39; });

// 添加一个文件到压缩包,通过Buffer数据的方式附加文件
const buffer3 = Buffer.from(&#39;buff it!&#39;);
archive.append(buffer3, { name: &#39;file3.txt&#39; });

// 添加一个文件到压缩包,直接传入文件路径
archive.file(&#39;file1.txt&#39;, { name: &#39;file4.txt&#39; });
Salin selepas log masuk

// 第一步,导入必要的模块
const fs = require(&#39;fs&#39;);
const archiver = require(&#39;archiver&#39;);

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver(&#39;zip&#39;, {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩指定文件
archive.append(fs.createReadStream(__dirname + &#39;/hello.txt&#39;), {name: &#39;hello.txt&#39;});// 文件流
archive.append(&#39;index.html&#39;, {name: &#39;index.html&#39;});// 文件路径
archive.append(Buffer.from("这是Buffer格式的数据"), {name: &#39;buffer.txt&#39;});// Buffer对象
archive.append("直接传入字符串", {name: &#39;string.txt&#39;});// 字符串

// 第五步,完成压缩
archive.finalize();
Salin selepas log masuk

Nota: Cara menggunakan arkib dalam nodejsParameter kedua
adalah untuk menamakan semula fail yang sepadan dalam pakej termampat. archive.append(){name: &#39;hello.txt&#39;}Mampatkan berbilang fail

Jika anda ingin memampatkan berbilang fail, cuma panggil kaedah

untuk melampirkan fail, dan fail yang dilampirkan ini akan ditambahkan pada pakej dimampatkan. Contohnya:

archive.append()

// 第一步,导入必要的模块
const fs = require(&#39;fs&#39;);
const archiver = require(&#39;archiver&#39;);

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver(&#39;zip&#39;, {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩多个文件到压缩包中
archive.append(&#39;index.html&#39;, {name: &#39;index.html&#39;});
archive.append(&#39;hello.js&#39;, {name: &#39;hello.js&#39;});
archive.append(&#39;hello.html&#39;, {name: &#39;hello.html&#39;});
archive.append(&#39;db.json&#39;, {name: &#39;db.json&#39;});

// 第五步,完成压缩
archive.finalize();
Salin selepas log masuk

Cara menggunakan arkib dalam nodejsMampat direktori

Jika anda ingin memampatkan direktori, anda perlu menggunakan

untuk melengkapkannya. API adalah seperti berikut:

archive.directory()

Contoh lengkapnya adalah seperti berikut:
// 将指定目录打包压缩到压缩包中,并且重命名为new-subdir,并且subdir目录下的所有文件仍然在new-subdir目录下,而不是在压缩包的根目录下
archive.directory(&#39;subdir/&#39;, &#39;new-subdir&#39;);

// 将指定目录下的所有文件打包压缩到压缩包中,而这些文件在压缩包的根目录,而非子目录中
archive.directory(&#39;subdir/&#39;, false);
Salin selepas log masuk

// 第一步,导入必要的模块
const fs = require(&#39;fs&#39;);
const archiver = require(&#39;archiver&#39;);

// 第二步,创建可写流来写入数据
const output = fs.createWriteStream(__dirname + "/hello.zip");// 将压缩包保存到当前项目的目录下,并且压缩包名为test.zip
const archive = archiver(&#39;zip&#39;, {zlib: {level: 9}});// 设置压缩等级

// 第三步,建立管道连接
archive.pipe(output);

// 第四步,压缩目录到压缩包中
archive.directory(&#39;public/&#39;, &#39;new-public&#39;);
archive.directory(&#39;demo/&#39;, false);

// 第五步,完成压缩
archive.finalize();
Salin selepas log masuk

Cara menggunakan arkib dalam nodejsPembelajaran yang disyorkan: "

tutorial video nodejs

"

Atas ialah kandungan terperinci Cara menggunakan arkib dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!