Node.js中如何创建和提取zip文件?方法介绍

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 中打开的文件。

1.png

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文件?方法介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2634960.html

(0)
上一篇 2025年3月7日 04:38:25
下一篇 2025年2月26日 06:22:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 了解一下Node.js中的文件夹写入

    本篇文章给大家介绍一下node.js中的文件夹写入。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《node js教程》 fs.Dir & fs.Dirent fs.Dir 是可迭代的目录流的类,fs.…

    2025年3月7日
    200
  • 浅谈Node.js监视文件变化的方法

    相关推荐:《nodejs 教程》 fs.FSWatcher fs.FSWatcher类 继承了 EventEmitter,用于监视文件变化,调用 fs.watch 后返回一个 fs.FSWatcher 实例,每当指定监视的文件被修改时,实例…

    2025年3月7日
    200
  • 如何利用nvm工具来管理node版本?方法介绍

    相关推荐:《node js教程》 nvm 是一种流行的运行 Node.js 的方式。 例如,它可以轻松地切换 Node.js 版本,也可以安装新版本用以尝试并且当出现问题时轻松地回滚。 这对于使用旧版本的 Node.js 来测试代码非常有用…

    2025年3月7日 编程技术
    200
  • Node.js学习之静态资源服务器

    相关推荐:《nodejs 教程》 在创建 HTTP 服务器实现了一个最简单的静态资源服务器,可以对代码进行写改造,增加文件夹预览功能,暴露出一些配置,变成一个可定制的静态资源服务器模块 模块化 可定制的静态资源服务器理想的使用方式应该是这样…

    2025年3月7日 编程技术
    200
  • Node.js和java后台服务器的简单比较

    最近去了新公司,又拾起了被我抛下许久的后端了,不过因为公司的需求,后端采用Nodejs,最近一直在学习Node.js,随着逐渐深入的了解,发现真的Node.js能越来越变得热门是有其存在的道理的。可能有人会说,Java作为后端语言一直隐隐有…

    2025年3月7日
    200
  • node.js“多线程”如何处理高并发任务?

    下面本篇文章给大家介绍一下使用 nodejs “多线程”处理高并发任务的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《nodejs视频教程》 摩尔定律 摩尔定律是由英特尔联合创始人戈登·摩尔(Gordo…

    2025年3月7日 编程技术
    200
  • 卸载Node.js的方法

    怎么卸载nodejs?下面本篇文章给大家介绍一下卸载node.js的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《nodejs视频教程》 Node.js的卸载 在控制面板-程序-程序和功能中卸载 确保n…

    2025年3月7日
    200
  • Node.js是什么?优势是什么?

    相关推荐:《nodejs 教程》 作为一名JS的粉忠实粉丝,虽然JS并没有JAVA的生态圈这么大,但是JavaScript从客户端脚本程序跻身服务器端,这让我们要重视一下它,JavaScript它在慢慢崛起,我们要换一种眼光去学习它。 No…

    2025年3月7日 编程技术
    200
  • mac下更新node.js到最新版

    mac下怎么将nodejs升级到最新版?下面本篇文章给大家介绍一下方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《nodejs视频教程》 mac下升级node.js 第一步,查看当前版本 node -v …

    2025年3月7日
    200
  • Nodejs怎么结束进程

    相关推荐:《nodejs 教程》 NodeJS结束进程 Process:对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()…

    2025年3月7日
    200

发表回复

登录后才能评论