站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        nodejs中archiver怎么用

        在nodejs中,archiver用于將一些文件壓縮打包成zip格式或tar格式的壓縮包;archiver是一個(gè)能跨平臺(tái)實(shí)現(xiàn)打包功能的模塊,打包的格式是zip和tar,可以利用“npm install archiver”語句在使用前安裝該模塊。

        nodejs中archiver怎么用

        本文操作環(huán)境:Windows10系統(tǒng)、nodejs 12.19.0版、Dell G3電腦。

        nodejs中archiver怎么用

        有時(shí)候我們需要將一些文件壓縮打包成zip格式或tar格式的壓縮包,也有可能需要將目錄進(jìn)行打包。在Node.js中就可以用到archiver這個(gè)第三方包來進(jìn)行操作。

        archiver是一個(gè)在nodejs中能跨平臺(tái)實(shí)現(xiàn)打包功能的模塊,可以打zip和tar包,是一個(gè)比較好用的三方模塊。

        使用前先安裝archiver模塊。

        代碼如下:

        npm install archiver

        引入:

        // 由于需要讀取文件所以需要fs模塊,也必須導(dǎo)入 const fs = require('fs'); const archiver = require('archiver');

        使用

        基本使用如下:

        // 第一步,導(dǎo)入必要的模塊 const fs = require('fs'); const archiver = require('archiver');  // 第二步,創(chuàng)建可寫流來寫入數(shù)據(jù) const output = fs.createWriteStream(__dirname + "/hello.zip");// 將壓縮包保存到當(dāng)前項(xiàng)目的目錄下,并且壓縮包名為test.zip const archive = archiver('zip', {zlib: {level: 9}});// 設(shè)置壓縮等級(jí)  // 第三步,建立管道連接 archive.pipe(output);  // 第四步,壓縮指定文件 var stream = fs.createReadStream(__dirname + "/hello.txt");// 讀取當(dāng)前目錄下的hello.txt archive.append(stream, {name: 'hello.txt'});  // 第五步,完成壓縮 archive.finalize();

        執(zhí)行代碼成功后,就會(huì)在項(xiàng)目的所在目錄下生成一個(gè)名為hello.zip壓縮包,該壓縮包內(nèi)就是壓縮的文件hello.txt。
        nodejs中archiver怎么用

        實(shí)例

        壓縮單個(gè)文件

        壓縮文件可以使用archive.append()archive.file()來進(jìn)行操作。

        壓縮單個(gè)文件的API如下:

        // 添加一個(gè)文件到壓縮包,通過可寫流的方式讀取數(shù)據(jù)附加文件 const file1 = __dirname + '/file1.txt'; archive.append(fs.createReadStream(file1), { name: 'file1.txt' });  //添加一個(gè)文件到壓縮包,通過將字符串寫入到文件的方式附加文件 archive.append('string cheese!', { name: 'file2.txt' });  // 添加一個(gè)文件到壓縮包,通過Buffer數(shù)據(jù)的方式附加文件 const buffer3 = Buffer.from('buff it!'); archive.append(buffer3, { name: 'file3.txt' });  // 添加一個(gè)文件到壓縮包,直接傳入文件路徑 archive.file('file1.txt', { name: 'file4.txt' });

        完整的例子如下:

        // 第一步,導(dǎo)入必要的模塊 const fs = require('fs'); const archiver = require('archiver');  // 第二步,創(chuàng)建可寫流來寫入數(shù)據(jù) const output = fs.createWriteStream(__dirname + "/hello.zip");// 將壓縮包保存到當(dāng)前項(xiàng)目的目錄下,并且壓縮包名為test.zip const archive = archiver('zip', {zlib: {level: 9}});// 設(shè)置壓縮等級(jí)  // 第三步,建立管道連接 archive.pipe(output);  // 第四步,壓縮指定文件 archive.append(fs.createReadStream(__dirname + '/hello.txt'), {name: 'hello.txt'});// 文件流 archive.append('index.html', {name: 'index.html'});// 文件路徑 archive.append(Buffer.from("這是Buffer格式的數(shù)據(jù)"), {name: 'buffer.txt'});// Buffer對(duì)象 archive.append("直接傳入字符串", {name: 'string.txt'});// 字符串  // 第五步,完成壓縮 archive.finalize();

        nodejs中archiver怎么用
        注意:archive.append()第二個(gè)參數(shù){name: 'hello.txt'}是對(duì)壓縮包中對(duì)應(yīng)的文件進(jìn)行重命名。

        壓縮多個(gè)文件

        如果要壓縮多個(gè)文件,直接調(diào)用archive.append()方法附加文件即可,這些附加的文件都會(huì)被添加到壓縮包中。如例:

        // 第一步,導(dǎo)入必要的模塊 const fs = require('fs'); const archiver = require('archiver');  // 第二步,創(chuàng)建可寫流來寫入數(shù)據(jù) const output = fs.createWriteStream(__dirname + "/hello.zip");// 將壓縮包保存到當(dāng)前項(xiàng)目的目錄下,并且壓縮包名為test.zip const archive = archiver('zip', {zlib: {level: 9}});// 設(shè)置壓縮等級(jí)  // 第三步,建立管道連接 archive.pipe(output);  // 第四步,壓縮多個(gè)文件到壓縮包中 archive.append('index.html', {name: 'index.html'}); archive.append('hello.js', {name: 'hello.js'}); archive.append('hello.html', {name: 'hello.html'}); archive.append('db.json', {name: 'db.json'});  // 第五步,完成壓縮 archive.finalize();

        nodejs中archiver怎么用

        壓縮目錄

        如果要壓縮目錄,則需要使用archive.directory()來完成。API如下:

        // 將指定目錄打包壓縮到壓縮包中,并且重命名為new-subdir,并且subdir目錄下的所有文件仍然在new-subdir目錄下,而不是在壓縮包的根目錄下 archive.directory('subdir/', 'new-subdir');  // 將指定目錄下的所有文件打包壓縮到壓縮包中,而這些文件在壓縮包的根目錄,而非子目錄中 archive.directory('subdir/', false);

        完整實(shí)例如下:

        // 第一步,導(dǎo)入必要的模塊 const fs = require('fs'); const archiver = require('archiver');  // 第二步,創(chuàng)建可寫流來寫入數(shù)據(jù) const output = fs.createWriteStream(__dirname + "/hello.zip");// 將壓縮包保存到當(dāng)前項(xiàng)目的目錄下,并且壓縮包名為test.zip const archive = archiver('zip', {zlib: {level: 9}});// 設(shè)置壓縮等級(jí)  // 第三步,建立管道連接 archive.pipe(output);  // 第四步,壓縮目錄到壓縮包中 archive.directory('public/', 'new-public'); archive.directory('demo/', false);  // 第五步,完成壓縮 archive.finalize();

        nodejs中archiver怎么用

        推薦學(xué)習(xí):《nodejs視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品乱码高清在线观看 | 国产成人无码精品久久久免费 | 国产精品久久久天天影视| 国产一级精品高清一级毛片| 国产精品免费观看调教网| 久久精品综合一区二区三区| 国产精品爽黄69天堂a| 久久99精品久久久久子伦| 日韩精品一区二区三区不卡| 国产精品va在线观看无码| 亚洲国产成人精品无码区在线观看| 正在播放国产精品每日更新| 91精品无码久久久久久五月天| AV无码精品一区二区三区| 少妇人妻偷人精品视频| 亚洲欧美日韩国产精品影院 | 久久99国产精品久久99果冻传媒| 亚洲精品无码乱码成人| 欧美日韩精品系列一区二区三区国产一区二区精品 | 8050免费午夜一级国产精品| 国产成人精品亚洲日本在线| 99国产精品无码| 国产欧美日韩精品丝袜高跟鞋 | 2021国产精品视频网站| 精品三级在线观看| 精品国产精品国产偷麻豆| 老司机67194精品线观看| 麻豆成人久久精品二区三区免费| 亚洲精品无码成人片久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久久精品国产Sm最大网站| 国内精品久久久久久中文字幕| 大胸国产精品视频| 国产精品二区观看| 国产精品被窝福利一区| 国产精品九九九| 精品无码国产自产拍在线观看蜜| 精品久久久久久国产牛牛app| 精品无码综合一区| 无翼乌无遮挡全彩老师挤奶爱爱帝国综合社区精品 | 人妻精品久久久久中文字幕69|