前の記事「Amazon EC2 ホスト https を有効にするための certbot について知っておくべきこと (コード共有)」では、Amazon EC2 ホスト https を有効にするための certbot について学びました。次の記事では、Node での zip 圧縮と zip 解凍について紹介しますので、その方法を見てみましょう。
NodeJSファイル (フォルダー) 圧縮/解凍スキーム
(zip/unzip)-Linuxon
zip 関連コマンド
adm-zip は、
archive および
unarchive の 1 つ以上をサポートします。ファイルまたはフォルダー全体の機能は非常にシンプルで使いやすいです。
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/ctackers/adm-zipJSZip を使用するファイルを使用する場合は、このライブラリを使用する必要があります
zip オブジェクトに 1 つずつ追加され、コンテンツを手動で追加する必要があります。その後、ファイル書き込み操作を使用してメモリ内の
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; });
JSZipfolder
という方法もありますが、使用のみ
zip オブジェクト内の仮想パスを切り替えます。たとえば、
zip.folder("img").file('a.txt') は
に 1 つ追加します。 zip
img サブディレクトリに
a.txt を作成します。その効果は
zip.file("img/a.txt") と同等です。ファイルの内容を手動で追加する必要があることにも注意してください。単に
zip.file("a.txt"); の場合、コンテンツは
zip 内に作成されるだけです。 オブジェクト。空の
txt ファイル。メモリ内にのみ存在し、実際にディスクに保存する前にファイルに書き込む必要があります。
その他の APIhttps://github.com/Stuk/jszipアーカイバを使用して解凍します
アーカイバ非常に強力です。
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-archiverzip Linux の /unzip コマンド
apt-get install zip unzip
zipFile
構文: unzip [-cflptuvz][-agcjlmnoqsvx][-P <パスワード> ;][ .zip ファイル][ファイル][-d <ディレクトリ>][-x <ファイル>] または解凍 [-Z]追加手順:
.zip の解凍解凍ツール 圧縮ファイル。
-c解凍結果を画面に表示し、文字を適切に変換します。
-f既存のファイルを更新します。
-l圧縮ファイルに含まれるファイルを表示します。
-p は
-c パラメータに似ており、解凍結果を画面に表示しますが、変換は実行しません。
-t圧縮ファイルが正しいか確認してください。
-u は
-f パラメータに似ていますが、既存のファイルを更新するだけでなく、圧縮ファイル内の他のファイルもディレクトリに解凍されます。
-v実行時に詳細情報を表示します。
-z圧縮ファイルのコメントテキストのみを表示します。
-a必要な文字をテキストファイルに変換します。
-bテキスト ファイルに対して文字変換を実行しないでください。
-C圧縮ファイル内のファイル名は大文字と小文字が区別されます。
-j圧縮ファイル内の元のディレクトリ パスを処理しません。
-L圧縮ファイル内のすべてのファイル名を小文字に変更します。
-M 出力結果を
more プログラムに送信して処理します。
-n解凍時に元のファイルを上書きしないでください。
-o最初にユーザーに確認する必要はありません。
unzip は実行後に元のファイルを上書きします。
-P<パスワード>
zip のパスワード オプションを使用します。
実行中に情報は表示されません。
ファイル名の空白文字をアンダースコア文字に変換します。
VMS
のファイル バージョン情報を保持します。
解凍すると、ファイルの元の UID/GID
も同時に保存されます。
.zip
圧縮ファイルを指定します。
.zip
圧縮ファイル内のどのファイルを処理するかを指定します。
解凍後にファイルを保存するディレクトリを指定します。
.zip
圧縮ファイル内のどのファイルを処理しないかを指定します。
は、zipinfo
コマンドの実行と同じです。
パラメータ:-a
ファイルを ASCII モードに変換します
破損した圧縮ファイルを修復してみます##-h
-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视频教程
以上がNode での zip 圧縮と zip 解凍の簡単な分析 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。