GitHub上一些实用的JavaScript的文件压缩解压缩库推荐


Posted in Javascript onMarch 13, 2016

项目里要用到archive和unarchive整个已存在的folder,在找解决方案的时候尝试了一些当前比较流行的library,主要有adm-zip, JSZip, archiver等。

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

var adm_zip = require('adm-zip');

  //creating archives
  var zip = new adm_zip(); 
  zip.addLocalFolder('archiver'); 
  zip.writeZip('adm/adm-archive.zip'); 

  //extracting archives 
  var unzip = new adm_zip('adm/adm-archive.zip'); 
  unzip.extractAllTo("adm/adm-unarchive/", /*overwrite*/true);

Pros and cons:
1. 同时实现了压缩和解压,而且只要提供路径就可以对已存在的文件或文件夹进行操作,实现了很多接口,使用方便简单。
2. 本身存在bug,有的时候解压文件没法还原到本来的文件。Hope慢慢这些bug会fix好。

二. UseJSZip
这个库在使用的时候需要把文件一个个增加到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文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。

Pros and cons:
1.对于一些实时接受到的数据转成zip的比较适用。 2.对于已存在的文件夹操作不便,需要一个个把内容添加到zip对象,再转成文件。
3.很多编码需要注意。
4.只有压缩功能。

三. Use archiver and unzip
这个组合是最后我使用的,比较靠谱,使用也比较简单,其中archiver很强大,支持zip格式tar格式,只需要提供路径就可以压缩已存在的文件夹。 压缩:

var fs = require('fs');
var archiver = require('archiver');

var output = fs.createWriteStream('archiver-unzip.zip');
var archive = archiver('zip');

archive.on('error', function(err){
  throw err;
});

archive.pipe(output);
archive.bulk([
  { src: ['archiver/**']}
]);
archive.finalize();

解压:

var fs = require("fs");
var unzip = require("unzip");

fs.createReadStream('archiver-unzip.zip').pipe(unzip.Extract({ path: 'unarchive' }));

Pros and cons:
1. 久经试用,bug较少。
2.使用方便,不需要遍历文件夹。
3. 均只提供压缩或者解压,没有两个功能都实现的。(所以adm-zip其实很好用,但bug是硬伤啊...)

这些只是我昨天找的一些库,欢迎推荐其他库么么哒

Javascript 相关文章推荐
在vs2010中调试javascript代码方法
Feb 11 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
AngularJS的脏检查深入分析
Apr 22 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
Aug 10 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
JS如何把字符串转换成json
Feb 21 Javascript
Element Notification通知的实现示例
Jul 27 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
Javascript数组Array基础介绍
Mar 13 #Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 #Javascript
简单谈谈json跨域
Mar 13 #Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 #Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 #Javascript
JavaScript中循环遍历Array与Map的方法小结
Mar 12 #Javascript
Node.js的Express框架使用上手指南
Mar 12 #Javascript
You might like
DC动漫人物排行
2020/03/03 欧美动漫
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
Apache设置虚拟WEB
2006/10/09 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
详解angular element()方法使用
2017/04/08 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
Python操作Excel之xlsx文件
2017/03/24 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
书香校园活动方案
2014/02/28 职场文书
办公室副主任职责范本
2014/03/08 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
产品调价通知函
2015/04/20 职场文书
电视新闻稿
2015/07/17 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python