新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)Node.js中怎么創(chuàng)建和提取zip文件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供石獅企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為石獅眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
Zip文件是常用的壓縮文件格式。大多數(shù)開發(fā)人員最終使用tarball而不是zip文件。但在某些情況下,您需要使用zip文件,例如將函數(shù)上載到AWS Lambda。在本文中,我將演示如何用 adm-zip npm模塊創(chuàng)建和提取zip文件。
創(chuàng)建一個(gè)Zip文件
從 adm-zip 的 npm 模塊中導(dǎo)出一個(gè) AdmZip
類。 AdmZip
的實(shí)例對應(yīng)于一個(gè)zip文件。如果想要創(chuàng)建一個(gè)新的 zip 文件,在調(diào)用 new AdmZip()
時(shí)不應(yīng)帶任何參數(shù):
const AdmZip = require('adm-zip'); const file = new AdmZip();
可以通過多種方式將文件和目錄添加到 file
??梢杂?file.addLocalFile()
和 file.addLocalFolder()
通過文件名從文件系統(tǒng)添加文件和目錄。例如下面的代碼演示了怎樣把 package.json
文件和 node_modules
目錄添加到 zip 文件中:
const AdmZip = require('adm-zip'); const file = new AdmZip(); file.addLocalFile('./package.json'); //第二個(gè)node_modules 參數(shù)是 zip 中目錄的路徑。 //如果沒有第二個(gè)參數(shù),則`./node_modules`中的每個(gè)目錄都將是壓縮文件中的頂級目錄 file.addLocalFolder('./node_modules', 'node_modules');
然后,你可以使用下面兩種方法中的一個(gè)寫入文件:
//寫入zip文件的第一種方法:將其轉(zhuǎn)換為緩沖區(qū)并使用`fs` const fs = require('fs'); fs.writeFileSync('output.zip', file.toBuffer()); // 另一種寫入 zip 文件的方法:writeZip() file.writeZip('output.zip');
寫入output.zip
文件后,你應(yīng)該能夠在制定的 zip 解壓縮程序中打開它。下面是在 Xubuntu 的默認(rèn)存檔管理器 engrampa 中打開的文件。
addLocalFile()
和 addLocalFolder()
的第二個(gè)參數(shù)是將文件或目錄內(nèi)容放入zip的路徑。例如,如果要將 package.json
和 node_modules
都放在 project
目錄下,則可以運(yùn)行以下腳本:
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 緩沖區(qū)添加文件。以下是不在文件系統(tǒng)上創(chuàng)建文件的情況下,將包含字符串 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());
使用現(xiàn)有文件
如果你將參數(shù)傳遞給 AdmZip
構(gòu)造函數(shù),則adm-zip將在給定路徑下解析文件。下面是將所有內(nèi)容從 output.zip
文件提取到目錄 output
的方法。
const AdmZip = require('adm-zip'); const file = new AdmZip('./output.zip'); file.extractAllTo('./output');
也可以用 file.extractEntryTo()
從 zip 文件中提取單個(gè)文件。例如,下面是從 zip 文件中拉出 hello.txt
文件并將其寫入當(dāng)前目錄的方法:
const AdmZip = require('adm-zip'); const file = new AdmZip('./output.zip'); file.extractEntryTo('hello.txt', './');
你也可以對現(xiàn)有文件使用 addLocalFile()
,addLocalFolder()
和 addFile()
。
關(guān)于Node.js中怎么創(chuàng)建和提取zip文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享標(biāo)題:Node.js中怎么創(chuàng)建和提取zip文件
本文路徑:http://fisionsoft.com.cn/article/gpccos.html