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 中開啟的檔案。
addLocalFile()
和addLocalFolder()
的第二個參數是將檔案或目錄內容放入zip的路徑。例如,如果要將package.json
和node_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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

基於無阻塞、事件驅動建立的Node服務,具有記憶體消耗低的優點,非常適合處理海量的網路請求。在海量請求的前提下,就需要考慮「記憶體控制」的相關問題了。 1. V8的垃圾回收機制與記憶體限制 Js由垃圾回收機

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

文件模組是對底層文件操作的封裝,例如文件讀寫/打開關閉/刪除添加等等文件模組最大的特點就是所有的方法都提供的**同步**和**異步**兩個版本,具有sync 字尾的方法都是同步方法,沒有的都是異

Node 19已正式發布,以下這篇文章就來帶大家詳解了解Node.js 19的 6 大特性,希望對大家有幫助!

事件循環是 Node.js 的基本組成部分,透過確保主執行緒不被阻塞來實現非同步編程,了解事件循環對建立高效應用程式至關重要。以下這篇文章就來帶大家深入了解Node中的事件循環 ,希望對大家有幫助!

node無法用npm指令是因為沒有正確配置環境變量,其解決方法是:1、開啟“系統屬性”;2、找到“環境變數”->“系統變數”,然後編輯環境變數;3、找到nodejs所在的資料夾;4、點選「確定」即可。
