首頁 > web前端 > js教程 > Node.js中如何建立和提取zip檔?方法介紹

Node.js中如何建立和提取zip檔?方法介紹

青灯夜游
發布: 2020-11-26 17:54:30
轉載
5023 人瀏覽過

Node.js中如何建立和提取zip檔?方法介紹

相關推薦:《nodejs 教學

Zip檔案是常用的壓縮檔案格式。大多數開發人員最終使用tarball而不是zip檔。但在某些情況下,您需要使用zip文件,例如將函數上載到AWS Lambda。在本文中,我將示範如何以 adm-zip npm模組建立和提取zip檔。

建立一個Zip檔

從 adm-zip 的 npm 模組中匯出一個 AdmZip 類別。 AdmZip的實例對應於一個zip檔。如果想要建立一個新的zip 文件,在呼叫new AdmZip() 時不應帶任何參數:

const AdmZip = require('adm-zip');

const file = new AdmZip();
登入後複製

可以透過多種方式將文件和目錄新增至 file。可以用 file.addLocalFile()file.addLocalFolder() 透過檔案名稱從檔案系統新增檔案和目錄。例如下面的程式碼示範如何把package.json 檔案和node_modules 目錄加入到zip 檔案中:

const AdmZip = require('adm-zip');

const file = new AdmZip();

file.addLocalFile('./package.json');
//第二个node_modules 参数是 zip 中目录的路径。
//如果没有第二个参数,则`./node_modules`中的每个目录都将是压缩文件中的顶级目录
file.addLocalFolder('./node_modules', 'node_modules');
登入後複製

然後,你可以使用下面兩種方法中的一個寫入檔案:

//写入zip文件的第一种方法:将其转换为缓冲区并使用`fs`
const fs = require('fs');

fs.writeFileSync('output.zip', file.toBuffer());

// 另一种写入 zip 文件的方法:writeZip()
file.writeZip('output.zip');
登入後複製

寫入output.zip 檔案後,你應該可以在製定的zip 解壓縮程式中開啟它。下面是在 Xubuntu 的預設存檔管理器 engrampa 中開啟的檔案。

Node.js中如何建立和提取zip檔?方法介紹

addLocalFile()addLocalFolder() 的第二個參數是將檔案或目錄內容放入zip的路徑。例如,如果要將package.jsonnode_modules 都放在project 目錄下,則可以執行下列腳本:

const AdmZip = require('adm-zip');

const file = new AdmZip();

file.addLocalFile('./package.json', 'project');
file.addLocalFolder('./node_modules', 'project/node_modules');

const fs = require('fs');

fs.writeFileSync('output.zip', file.toBuffer());
登入後複製

可用file.addFile() 方法從原始Node.js 緩衝區新增檔案。以下是不在檔案系統上建立檔案的情況下,將包含字串 Hello,World 的文字檔案新增至 zip 檔案中的方法。

const AdmZip = require('adm-zip');

const file = new AdmZip();

file.addFile('hello.txt', Buffer.fromString('Hello, World'));

const fs = require('fs');

fs.writeFileSync('output.zip', file.toBuffer());
登入後複製

使用現有檔案

如果你將參數傳遞給 AdmZip 建構函數,則adm-zip將在給定路徑下解析檔案。以下是將所有內容從 output.zip 檔案提取到目錄 output 的方法。

const AdmZip = require('adm-zip');

const file = new AdmZip('./output.zip');

file.extractAllTo('./output');
登入後複製

也可以用 file.extractEntryTo() 從 zip 檔案中提取單一檔案。例如,以下是從zip 檔案中拉出hello.txt 檔案並將其寫入目前目錄的方法:

const AdmZip = require('adm-zip');

const file = new AdmZip('./output.zip');

file.extractEntryTo('hello.txt', './');
登入後複製

你也可以對現有檔案使用addLocalFile( )addLocalFolder()addFile()

總結

zip 檔案通常用於壓縮。某些服務(例如AWS Lambda)要求你使用 zip 檔案。幸運的是,adm-zip npm 模組使直接從 Node.js 建立和提取 zip 檔案變得容易。

英文原文網址:http://thecodebarbarian.com/working-with-zip-files-in-node-js.html

作者:Valeri Karpov

更多程式相關知識,請造訪:程式設計影片! !

以上是Node.js中如何建立和提取zip檔?方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板