相關推薦:《》
Zip檔案是常用的壓縮檔案格式。大多數開發人員最終使用tarball而不是zip檔案。但在某些情況下,您需要使用zip檔案,例如將函數上載到AWS Lambda。在本文中,我將演示如何用 adm-zip npm模組建立和提取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檔案?方法介紹的詳細內容,更多請關注TW511.COM其它相關文章!