


A brief analysis of zip compression and zip decompression in Node (with code)
In the previous article "What you need to know about certbot to enable Amazon EC2 host https (code sharing)", we learned about certbot to enable Amazon EC2 host https. The following article will introduce you to zip compression and zip decompression in Node. Let's see how to do it.
##NodeJSFile (folder) compression/decompression scheme
(zip/unzip)-Linuxon
zipRelated commands
adm-zip supports one or more of
archive and
unarchive The function of a file or an entire folder is very simple and convenient to use.
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);
More apihttps://github.com/cthackers/adm-zipUse JSZipThis library needs to be used when using Files are added to the
zip object one by one, and the content needs to be added manually, and then the file writing operation is used to convert the
zip object in the memory into physical storage. So if it is for an entire folder, it is very troublesome. You need to traverse the 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; });
JSZipThere is also a
folder method, but it is only used Switch the virtual path inside the
zip object, for example
zip.folder("img").file('a.txt') is to add one in
zip
img subdirectory, create
a.txt below, the effect is equivalent to
zip.file("img/a.txt"). It should also be noted here that the contents of the file need to be added manually. If it is just
zip.file("a.txt"); the content is just created in the
zip object. An empty
txt file, and it only exists in the memory and needs to be written to the file before it is actually saved to the disk.
More APIhttps://github.com/Stuk/jszipUse archiver and unzip
archiverVery powerful , supports
zip format
tar format, you only need to provide the path to compress an existing folder.
// 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();Decompression
var fs = require("fs"); var unzip = require("unzip"); fs.createReadStream("archiver-unzip.zip").pipe( unzip.Extract({ path: "unarchive" }) );
More APIhttps://github.com/archiverjs/node-archiverzip/unzip command on Linux
apt-get install zip unzip
UnzipzipFile
Syntax: unzip [-cflptuvz][-agcjlmnoqsvx][-PAdditional instructions:][-x ] or unzip [-Z]
unzip Decompressor for .zip compressed files.
-cDisplay the decompression result on the screen and convert the characters appropriately.
-fUpdate existing files.
-lDisplay the files contained in the compressed file.
-p is similar to the
-c parameter. It will display the decompression result on the screen, but will not perform any conversion.
-tCheck whether the compressed file is correct.
-u is similar to the
-f parameter, but in addition to updating existing files, other files in the compressed file will also be decompressed into the directory.
-vDisplay detailed information when executing.
-zOnly display the comment text of the compressed file.
-aConvert the necessary characters to the text file.
-bDo not perform character conversion on text files.
-CFile names in compressed files are case-sensitive.
-jDo not process the original directory path in the compressed file.
-LChange all file names in the compressed file to lowercase.
-M Send the output results to the
more program for processing.
-nDo not overwrite the original file when decompressing.
-oNo need to ask the user first,
unzipoverwrites the original file after execution.
-P<password> Use the password option of </password>
zip.
-qNo information is displayed during execution.
-sConvert whitespace characters in file names to underscore characters.
-VKeep the file version information of
VMS.
-X When decompressing, the original
UID/GID of the file will be saved at the same time.
[.zip file]Specify the
.zip compressed file.
[File]Specify which files in the
.zip compressed file are to be processed.
-dSpecify the directory where the file will be stored after decompression.
-xSpecifies which files in the
.zip compressed file are not to be processed.
-Z unzip-Z is equivalent to executing the
zipinfo command.
The basic usage is: zip [parameter][packaged file name] [packaged directory path]Parameter:
-aConvert the file to ASCII mode
-FTry to repair the damaged compressed file
-hDisplay the help interface
-mAfter compressing the file, delete the source file
-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视频教程
The above is the detailed content of A brief analysis of zip compression and zip decompression in Node (with code). For more information, please follow other related articles on the PHP Chinese website!

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Zend Studio 13.0.1
Powerful PHP integrated development environment

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool