Im vorherigen Artikel „Was Sie über Certbot wissen müssen, um Amazon EC2 Host https (Code-Sharing) zu aktivieren “ haben wir etwas über Certbot erfahren, um Amazon EC2 Host https zu aktivieren. Der folgende Artikel stellt Ihnen die Zip-Komprimierung und Zip-Dekomprimierung in Node vor. Mal sehen, wie es geht.
NodeJS
Datei-(Ordner-)Komprimierungs-/Dekomprimierungsschema(zip/unzip)-<code>zip
-bezogene Befehle unter LinuxNodeJS
文件(夹)压缩/解压方案(zip/unzip)-Linux
上zip
相关命令
adm-zip
支持archive
和unarchive
一个或多个文件或者整个文件夹的功能,使用非常的简单方便。
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);
更多 apihttps://github.com/cthackers/adm-zip
这个库在使用的时候需要把文件一个个增加到zip
对象中,而且需要把内容也手动添加,再使用写文件操作把内存中的zip
对象转成物理存储。所以如果是对于一整个文件夹来说,就很麻烦,需要遍历文件夹
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
里面也有个folder
方法,但它只是用来切换zip
对象内部的虚拟路径,比如zip.folder("img").file('a.txt')
就是在zip
中添加一个img
子目录,在下面创建a.txt
,效果等同于zip.file("img/a.txt")
。这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt")
;只是在zip
对象中创建了内容为空的txt
文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。
更多 APIhttps://github.com/Stuk/jszip
Use archiver and unzip
archiver
很强大,支持zip
格式tar
格式,只需要提供路径就可以压缩已存在的文件夹。
压缩:
// 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();
解压
var fs = require("fs"); var unzip = require("unzip"); fs.createReadStream("archiver-unzip.zip").pipe( unzip.Extract({ path: "unarchive" }) );
更多APIhttps://github.com/archiverjs/node-archiver
apt-get install zip unzip
解压缩zip
文件
语 法:unzip [-cflptuvz][-agcjlmnoqsvx][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
补充说明:unzip为.zip
压缩文件的解压缩程序。
参 数:
-c
将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f
更新现有的文件。
-l
显示压缩文件内所包含的文件。
-p
与-c
参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t
检查压缩文件是否正确。
-u
与-f
参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v
执行是时显示详细的信息。
-z
仅显示压缩文件的备注文字。
-a
对文本文件进行必要的字符转换。
-b
不要对文本文件进行字符转换。
-C
压缩文件中的文件名称区分大小写。
-j
不处理压缩文件中原有的目录路径。
-L
将压缩文件中的全部文件名改为小写。
-M
将输出结果送到more
程序处理。
-n
解压缩时不要覆盖原有的文件。
-o
不必先询问用户,unzip
执行后覆盖原有文件。
-P
<密码> 使用zip
的密码选项。
-q
执行时不显示任何信息。
-s
将文件名中的空白字符转换为底线字符。
-V
保留VMS
的文件版本信息。
-X
解压缩时同时回存文件原来的UID/GID
。
[.zip 文件]
指定.zip
压缩文件。
[文件]
指定要处理.zip
压缩文件中的哪些文件。
-d<目录>
指定文件解压缩后所要存储的目录。
-x<文件>
指定不要处理.zip
压缩文件中的哪些文件。
-Z unzip-Z
等于执行zipinfo
指令。
基本用法是:zip [参数][打包后的文件名] [打包的目录路径]
参数:
-a
将文件转成 ASCII 模式
-F
尝试修复损坏的压缩文件
-h
显示帮助界面
-m
adm-zip
unterstützt die Funktionen archivieren
und unarchive
für eine oder mehrere Dateien oder einen gesamten Ordner . Sehr einfach und bequem zu bedienen. 🎜zip -r test.zip abc.txt dir1 #解压缩: ```sh unzip test.zip
zip< hinzufügen /code>-Objekt, und der Inhalt muss manuell hinzugefügt werden. Anschließend wird der Dateischreibvorgang verwendet, um das <code>zip
-Objekt im Speicher in physischen Speicher umzuwandeln. Wenn es sich also um einen gesamten Ordner handelt, ist es sehr mühsam, den Ordner zu durchlaufen. 🎜unzip abc\?.zip
JSZip
verfügt auch über eine folder
-Methode, die jedoch nur verwendet wird switch < Der virtuelle Pfad innerhalb des code>zip-Objekts, z. B. zip.folder("img").file('a.txt')
, wird in zip< hinzugefügt /code> Ein Unterverzeichnis <code>img
. Erstellen Sie unten a.txt
. Der Effekt entspricht zip.file("img/a.txt")
. Hierbei ist auch zu beachten, dass der Inhalt der Datei manuell hinzugefügt werden muss. Wenn es sich nur um zip.file("a.txt")
handelt, wird er einfach im zip erstellt
-Objekt Der Inhalt ist eine leere txt
-Datei, die nur im Speicher vorhanden ist und in die Datei geschrieben werden muss, bevor sie tatsächlich auf der Festplatte gespeichert wird. 🎜🎜🎜Weitere APIs https://github.com/Stuk/jszip🎜🎜🎜Archiver verwenden und entpacken🎜🎜archiver
ist sehr leistungsstark und unterstützt das zip
-Format Wenn Sie das tar-Format
verwenden, müssen Sie nur den Pfad zum Komprimieren eines vorhandenen Ordners angeben. 🎜🎜Komprimierung: 🎜unzip -v test.zip
unzip -t test.zip
unzip -j music.zip
zip < /code>Datei🎜🎜🎜Syntax: entpacken [-cflptuvz][-agcjlmnoqsvx][-P <Passwort>][.zip-Datei][Datei][-d <Verzeichnis>][-x <Datei>] oder unzip [-Z]🎜🎜🎜Zusätzliche Erklärung: <code>unzip ist ein Dekomprimierungsprogramm für .zip
komprimierte Dateien. 🎜🎜Parameter: 🎜🎜-c
zeigt das Dekomprimierungsergebnis auf dem Bildschirm an und konvertiert die Zeichen entsprechend. 🎜🎜-f
Vorhandene Dateien aktualisieren. 🎜🎜-l
Zeigen Sie die in der komprimierten Datei enthaltenen Dateien an. 🎜🎜-p
ähnelt dem Parameter -c
. Er zeigt das Dekomprimierungsergebnis auf dem Bildschirm an, führt jedoch keine Konvertierung durch. 🎜🎜-t
Überprüfen Sie, ob die komprimierte Datei korrekt ist. 🎜🎜-u
ähnelt dem Parameter -f
, aber zusätzlich zur Aktualisierung vorhandener Dateien werden auch andere Dateien in der komprimierten Datei in das Verzeichnis dekomprimiert. 🎜🎜-v
zeigt bei Ausführung detaillierte Informationen an. 🎜🎜-z
Zeigt nur den Kommentartext der komprimierten Datei an. 🎜🎜-a
Führt die erforderliche Zeichenkonvertierung für Textdateien durch. 🎜🎜-b
Führen Sie keine Zeichenkonvertierung für Textdateien durch. 🎜🎜-C
Bei Dateinamen in komprimierten Dateien muss die Groß-/Kleinschreibung beachtet werden. 🎜🎜-j
verarbeitet nicht den ursprünglichen Verzeichnispfad in der komprimierten Datei. 🎜🎜-L
Ändert alle Dateinamen in der komprimierten Datei in Kleinbuchstaben. 🎜🎜-M
sendet die Ausgabeergebnisse zur Verarbeitung an das Programm more
. 🎜🎜-n
Überschreiben Sie beim Dekomprimieren nicht die Originaldatei. 🎜🎜-o
Sie müssen den Benutzer nicht zuerst fragen, unzip
überschreibt die Originaldatei nach der Ausführung. 🎜🎜-P
zip
. 🎜🎜-q
zeigt bei der Ausführung keine Informationen an. 🎜🎜-s
Konvertiert Leerzeichen in Dateinamen in Unterstriche. 🎜🎜-V
behält die Dateiversionsinformationen von VMS
bei. 🎜🎜-X
speichert beim Dekomprimieren auch die ursprüngliche UID/GID
der Datei. 🎜🎜[.zip-Datei]
Gibt die komprimierte Datei .zip
an. 🎜🎜[file]
Gibt an, welche Dateien in der komprimierten Datei .zip
verarbeitet werden sollen. 🎜🎜-d<Directory>
Gibt das Verzeichnis an, in dem die Datei nach der Dekomprimierung gespeichert wird. 🎜🎜-x<File>
gibt an, welche Dateien in der komprimierten Datei .zip
nicht verarbeitet werden sollen. 🎜🎜-Z unzip-Z
entspricht der Ausführung des Befehls zipinfo
. 🎜🎜🎜Die grundlegende Verwendung ist: zip [Parameter][Name der gepackten Datei] [Pfad des gepackten Verzeichnisses]🎜🎜🎜Parameter: 🎜🎜-a
Konvertieren Sie die Datei in den ASCII-Modus🎜🎜- F
Versuchen Sie, die beschädigte komprimierte Datei zu reparieren🎜🎜-h
Zeigen Sie die Hilfeoberfläche an🎜🎜-m
Löschen Sie nach dem Komprimieren der Datei die Quelldatei🎜-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视频教程
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Zip-Komprimierung und Zip-Dekomprimierung in Node (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!