Rumah >hujung hadapan web >tutorial js >Analisis ringkas tentang pemampatan zip dan penyahmampatan zip dalam Node (dengan kod)

Analisis ringkas tentang pemampatan zip dan penyahmampatan zip dalam Node (dengan kod)

奋力向前
奋力向前ke hadapan
2021-09-03 11:14:334730semak imbas

Dalam artikel sebelumnya "Apa yang anda perlu tahu tentang certbot untuk mendayakan hos Amazon EC2 https (perkongsian kod) ", kami mempelajari tentang certbot untuk mendayakan hos Amazon EC2 https. Artikel berikut akan memperkenalkan anda kepada pemampatan zip dan penyahmampatan zip dalam Node. Mari lihat cara melakukannya.

Analisis ringkas tentang pemampatan zip dan penyahmampatan zip dalam Node (dengan kod)

NodeJSFail (folder) skema mampatan/penyahmampatan (zip/unzip)-Linux pada zipArahan berkaitan

Gunakan adm-zip

adm-zip menyokong fungsi archive dan unarchive untuk satu atau lebih fail atau keseluruhan folder Ia sangat mudah dan mudah digunakan.

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

//creating archives
var zip = new adm_zip();
zip.addLocalFolder("./dist");
zip.writeZip("./dist.zip");

//extracting archives
var unzip = new adm_zip("dist.zip");
unzip.extractAllTo("./dist", /*overwrite*/ true);

Lagi api https://github.com/cthackers/adm-zip

Gunakan JSZip

Apabila menggunakan perpustakaan ini Fail perlu untuk ditambahkan pada objek zip satu demi satu, dan kandungannya perlu ditambah secara manual, dan kemudian operasi penulisan fail digunakan untuk menukar objek zip dalam memori kepada storan fizikal. Jadi jika ia untuk keseluruhan folder, ia sangat menyusahkan anda perlu melintasi folder

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;
});

JSZip juga terdapat kaedah folder, tetapi ia hanya digunakan untuk suis di dalam objek zip. Laluan maya, seperti zip.folder("img").file('a.txt'), adalah untuk menambah subdirektori zip dalam img dan mencipta a.txt di bawah, kesannya bersamaan dengan zip.file("img/a.txt"). Perlu juga diperhatikan di sini bahawa kandungan fail perlu ditambah secara manual Jika ia hanya zip.file("a.txt"); hanya fail zip yang dibuat dalam objek txt dan ia hanya wujud dalam objek. memori dan perlu ditulis Fail sebenarnya disimpan ke cakera selepas operasi.

Lebih banyak API https://github.com/Stuk/jszip

Gunakan arkib dan nyahzip

archiverSangat berkuasa dan disokongzipFormatkan format tar, anda hanya perlu menyediakan laluan untuk memampatkan folder sedia ada.

Mampatan:

// require modules
var fs = require("fs");
var archiver = require("archiver");

// create a file to stream archive data to.
var output = fs.createWriteStream(__dirname + "/example.zip");
var archive = archiver("zip", {
  zlib: { level: 9 }, // Sets the compression level.
});

// pipe archive data to the file
archive.pipe(output);

// append a file from stream
var file1 = __dirname + "/file1.txt";
archive.append(fs.createReadStream(file1), { name: "file1.txt" });

// append a file from string
archive.append("string cheese!", { name: "file2.txt" });

// append a file from buffer
var buffer3 = Buffer.from("buff it!");
archive.append(buffer3, { name: "file3.txt" });

// append a file
archive.file("file1.txt", { name: "file4.txt" });

// append files from a sub-directory and naming it `new-subdir` within the archive
archive.directory("subdir/", "new-subdir");

// append files from a sub-directory, putting its contents at the root of archive
archive.directory("subdir/", false);

// append files from a glob pattern
archive.glob("subdir/*.txt");

// finalize the archive (ie we are done appending files but streams have to finish yet)
// 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehand
archive.finalize();

Penyahmampatan

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

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

Lebih banyak API https://github.com/archiverjs/node-archiver

zip/nyahzip perintah pada Linux

apt-get install zip unzip

Nyahmampatkan zip fail

Sintaks: nyahzip [-cflptuvz][-agcjlmnoqsvx][-P 246796ab27b408c124e2179e99c7e52b][-x 7a5dcbb34f3ac008f1c1b4854c49d768] atau nyahzip [-Z]

Arahan tambahan: unzip为.zipPenyahmampat untuk dimampatkan fail.

Parameter:

-cPaparkan hasil penyahmampatan pada skrin dan tukar aksara dengan sewajarnya.

-fKemas kini fail sedia ada.

-lPaparkan fail yang terkandung dalam fail termampat.

-p adalah serupa dengan parameter -c dan akan memaparkan hasil nyahmampat pada skrin, tetapi tidak akan melakukan sebarang penukaran.

-tPeriksa sama ada fail yang dimampatkan itu betul.

-u adalah serupa dengan parameter -f, tetapi selain mengemas kini fail sedia ada, fail lain dalam fail termampat juga akan diekstrak ke dalam direktori.

-vPaparkan maklumat terperinci semasa melaksanakan.

-zHanya tunjukkan teks ulasan fail yang dimampatkan.

-aTukar aksara yang diperlukan kepada fail teks.

-bJangan lakukan penukaran aksara pada fail teks.

-CNama fail dalam fail dimampatkan adalah sensitif huruf besar-besaran.

-jTidak memproses laluan direktori asal dalam fail termampat.

-LTukar semua nama fail dalam fail yang dimampatkan kepada huruf kecil.

-M menghantar hasil output ke program more untuk diproses.

-nJangan tulis ganti fail asal semasa menyahmampat.

-oTidak perlu bertanya kepada pengguna dahulu, unziptulis ganti fail asal selepas pelaksanaan.

-P3c95c81efb7436ebf19ffd756b42f4f4 zip

Tiada maklumat dipaparkan apabila dilaksanakan. -q

Menukar aksara ruang putih dalam nama fail kepada aksara garis bawah. -s

mengekalkan maklumat versi fail -V. VMS

Apabila menyahmampat, fail asal -X akan disimpan pada masa yang sama. UID/GID

Nyatakan [.zip 文件] fail termampat. .zip

Menentukan fail mana dalam [文件] fail mampat yang hendak diproses. .zip

Nyatakan direktori tempat fail akan disimpan selepas penyahmampatan. -dda0bd984eba5457db42d205ec9e233d3

Nyatakan fail yang mana dalam arkib -x70120f5feaf4a4e4f18aa0e9e4edf7f7 tidak boleh diproses. .zip

adalah bersamaan dengan melaksanakan perintah -Z unzip-Z. zipinfo

Penggunaan asas ialah: zip [parameter][nama fail yang dibungkus] [laluan direktori yang dibungkus]

Parameter:

Tukar fail ke mod ASCII-a

Cuba baiki fail mampat yang rosak-F

Paparkan antara muka bantuan-h

Selepas memampatkan fail, padamkan fail sumber -m

-n特定字符串 不压缩具有特定字尾字符串的文件

-o将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

-q安静模式,在压缩的时候不显示指令的执行过程

-r将指定的目录下的所有子目录以及文件一起处理

-S包含系统文件和隐含文件(S 是大写)

范 例:

zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。 压缩文件abc.txt和一个目录dir1,名字test.zip

zip -r test.zip abc.txt dir1
#解压缩:
```sh
unzip test.zip

目录下有abc1.zipabc2.zipabc3.zip,使用通配符

unzip abc\?.zip

注释:?表示一个字符,如果用*表示任意多个字符。 不解压,只查看内容

unzip -v test.zip

验证zip文件完成性,查看网上下的包包是不是已经下载完了

unzip -t test.zip

我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录:

unzip -j music.zip

推荐学习:JS视频教程

Atas ialah kandungan terperinci Analisis ringkas tentang pemampatan zip dan penyahmampatan zip dalam Node (dengan kod). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:chuchur.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam