Rumah > Artikel > hujung hadapan web > Analisis ringkas tentang pemampatan zip dan penyahmampatan zip dalam Node (dengan kod)
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.
NodeJS
Fail (folder) skema mampatan/penyahmampatan (zip/unzip)-Linux
pada zip
Arahan berkaitan
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
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
archiver
Sangat berkuasa dan disokongzip
Formatkan 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
apt-get install zip unzip
Nyahmampatkan zip
fail
Sintaks: nyahzip [-cflptuvz][-agcjlmnoqsvx][-P 246796ab27b408c124e2179e99c7e52b][-x 7a5dcbb34f3ac008f1c1b4854c49d768] atau nyahzip [-Z]
Arahan tambahan: unzip为.zip
Penyahmampat untuk dimampatkan fail.
Parameter:
-c
Paparkan hasil penyahmampatan pada skrin dan tukar aksara dengan sewajarnya.
-f
Kemas kini fail sedia ada.
-l
Paparkan 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.
-t
Periksa 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.
-v
Paparkan maklumat terperinci semasa melaksanakan.
-z
Hanya tunjukkan teks ulasan fail yang dimampatkan.
-a
Tukar aksara yang diperlukan kepada fail teks.
-b
Jangan lakukan penukaran aksara pada fail teks.
-C
Nama fail dalam fail dimampatkan adalah sensitif huruf besar-besaran.
-j
Tidak memproses laluan direktori asal dalam fail termampat.
-L
Tukar semua nama fail dalam fail yang dimampatkan kepada huruf kecil.
-M
menghantar hasil output ke program more
untuk diproses.
-n
Jangan tulis ganti fail asal semasa menyahmampat.
-o
Tidak perlu bertanya kepada pengguna dahulu, unzip
tulis ganti fail asal selepas pelaksanaan.
-P
3c95c81efb7436ebf19ffd756b42f4f4 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.zip
,abc2.zip
和abc3.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!