• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 浅析Node.js中zip压缩和zip解压缩

浅析Node.js中zip压缩和zip解压缩

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Node.js,zip压缩,zip解压缩等相关知识,希望对您有所帮助

本篇文章给大家了解Node中zip压缩和zip解压缩,我们一起看看怎么做。


浅析Node.js中zip压缩和zip解压缩


NodeJS文件(夹)压缩/解压方案(zip/unzip)-Linux上zip相关命令

Use adm-zip

adm-zip支持archive和unarchive一个或多个文件或者整个文件夹的功能,使用非常的简单方便。

var adm_zip = require("adm-zip"); //creating archivesvar zip = new adm_zip();zip.addLocalFolder("./dist");zip.writeZip("./dist.zip"); //extracting archivesvar unzip = new adm_zip("dist.zip");unzip.extractAllTo("./dist", /*overwrite*/ true);

更多 api 查看:https://github.com/cthackers/adm-zip


Use JSZip

这个库在使用的时候需要把文件一个个增加到zip对象中,而且需要把内容也手动添加,再使用写文件操作把内存中的zip对象转成物理存储。所以如果是对于一整个文件夹来说,就很麻烦,需要遍历文件夹

var JSZip = require("jszip");var fs = require("fs"); var zip = new JSZip(); var file_content = fs.readFileSync("archive/a.txt"); zip.file("a.txt", file_content); var data = fs.readFileSync("archive/img/pic.jpeg");zip.file("img/pic.jpeg", data, { base64: true }); var zipfolder = zip.generate({ type: "nodebuffer" }); fs.writeFile("jszip.zip", zipfolder, function (err) {  if (err) throw err;});

JSZip里面也有个folder方法,但它只是用来切换zip对象内部的虚拟路径,比如zip.folder("img").file('a.txt')就是在zip中添加一个img子目录,在下面创建a.txt,效果等同于zip.file("img/a.txt")。这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt");只是在zip对象中创建了内容为空的txt文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。

更多 API查看:https://github.com/Stuk/jszip


Use archiver and unzip

archiver很强大,支持zip格式tar格式,只需要提供路径就可以压缩已存在的文件夹。

压缩:

// require modulesvar fs = require("fs");var archiver = require("archiver"); // create a file to stream archive data to.var output = fs.createWriteStream(__dirname + "/example.zip");var archive = archiver("zip", {  zlib: { level: 9 }, // Sets the compression level.}); // pipe archive data to the filearchive.pipe(output); // append a file from streamvar file1 = __dirname + "/file1.txt";archive.append(fs.createReadStream(file1), { name: "file1.txt" }); // append a file from stringarchive.append("string cheese!", { name: "file2.txt" }); // append a file from buffervar buffer3 = Buffer.from("buff it!");archive.append(buffer3, { name: "file3.txt" }); // append a filearchive.file("file1.txt", { name: "file4.txt" }); // append files from a sub-directory and naming it `new-subdir` within the archivearchive.directory("subdir/", "new-subdir"); // append files from a sub-directory, putting its contents at the root of archivearchive.directory("subdir/", false); // append files from a glob patternarchive.glob("subdir/*.txt"); // finalize the archive (ie we are done appending files but streams have to finish yet)// 'close', 'end' or 'finish' may be fired right after calling this method so register to them beforehandarchive.finalize();

解压

var fs = require("fs");var unzip = require("unzip"); fs.createReadStream("archiver-unzip.zip").pipe(  unzip.Extract({ path: "unarchive" }));

更多API查看:https://github.com/archiverjs/node-archiver


Linux上zip/unzip命令

apt-get install zip unzip

解压缩zip文件,语  法:

unzip [-cflptuvz][-agcjlmnoqsvx][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

补充说明:unzip为.zip压缩文件的解压缩程序。


参数:

-c将解压缩的结果显示到屏幕上,并对字符做适当的转换。

-f更新现有的文件。

-l显示压缩文件内所包含的文件。

-p与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。

-t检查压缩文件是否正确。

-u与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。

-v执行是时显示详细的信息。

-z仅显示压缩文件的备注文字。

-a对文本文件进行必要的字符转换。

-b不要对文本文件进行字符转换。

-C压缩文件中的文件名称区分大小写。

-j不处理压缩文件中原有的目录路径。

-L将压缩文件中的全部文件名改为小写。

-M将输出结果送到more程序处理。

-n解压缩时不要覆盖原有的文件。

-o不必先询问用户,unzip执行后覆盖原有文件。

-P<密码> 使用zip的密码选项。

-q执行时不显示任何信息。

-s将文件名中的空白字符转换为底线字符。

-V保留VMS的文件版本信息。

-X解压缩时同时回存文件原来的UID/GID。

[.zip 文件]指定.zip压缩文件。

[文件]指定要处理.zip压缩文件中的哪些文件。

-d<目录>指定文件解压缩后所要存储的目录。

-x<文件>指定不要处理.zip压缩文件中的哪些文件。

-Z unzip-Z等于执行zipinfo指令。


基本用法是:

zip [参数][打包后的文件名] [打包的目录路径]

参数:

-a将文件转成 ASCII 模式

-F尝试修复损坏的压缩文件

-h显示帮助界面

-m将文件压缩之后,删除源文件

-n特定字符串 不压缩具有特定字尾字符串的文件

-o将压缩文件内的所有

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • node.js 基于 STMP 协议和 EWS 协议发送邮件
  • Node.js中async的用法是什么
  • Node.js怎么读写json文件?方法介绍
  • Node.js设置NODE_ENV时发生错误怎么解决?
  • 一招教你使用Node.js中iis部署运行node(附代码)
  • 深入了解Node.js 中的多线程和多进程
  • 聊聊Node.js中的事件驱动程序和EventEmitter类
  • 浅析node Express框架中的 res.send() 和 res.end()
  • 什么是事件循环?详解Node.js中的事件循环
  • Node.js深入学习之浅析require函数中怎么添加钩子

相关文章

  • 常见的5个PHP编码小陋习以及优化实例讲解
  • php将数组转为json出现中文乱码怎么办
  • 带你搞懂怎么基于Docker安装Nginx搭建静态服务器
  • 织梦DEDECMS首页调用单页文档内容并带过滤HTML的方
  • PhotoShop打造抽象几何时尚美女海报制作教程
  • PHP以正则表达式验证手机号码
  • Photoshop制作金属嵌钻图案效果的字效
  • jQuery如何判断css是否存在
  • Mysql怎么查看字段的属性值
  • 总结分享: 6 种JavaScript的打断点的方式(收藏学习)

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • ThinkPHP中if标签和比较标签对于变量的比较
    • 大型企业网站的十大问题详解
    • CSS对SEO有影响吗
    • Dedecms 发布文章时 Tag标签中文逗号自动变成英文
    • 做seo排名时你的侧重点是什么
    • Bootstrap中怎么实现加载效果?读取图标(Spinners)组件
    • 详解php中的str_replace()(附代码实例)
    • dedecms调用Discuz!X2.5最新帖子和图片的方法
    • 微信小程序使用cookie保持session
    • JavaScript中字符串(string)如何转json

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有