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 相关文章推荐
另类调用flash无须激活的方法
Dec 27 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
借助javascript代码判断网页是静态还是伪静态
May 05 Javascript
select多选 multiple的使用示例
Jun 16 Javascript
a标签click和href执行顺序探讨
Jun 23 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
解读ES6中class关键字
Nov 20 Javascript
Vue中的验证登录状态的实现方法
Mar 09 Javascript
JavaScript如何获取一个元素的样式信息
Jul 29 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 Javascript
基于javascript原生判断DOM是否加载完毕
Oct 14 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
PHP4引用文件语句的对比
2006/10/09 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
javascript call方法使用说明
2010/01/11 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python opencv之SURF算法示例
2018/02/24 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python 函数list&read&seek详解
2019/08/28 Python
Python程序暂停的正常处理方法
2019/11/07 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
质检部部长职责
2013/12/16 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
初三英语教学计划
2015/01/23 职场文书
小班上学期个人总结
2015/02/12 职场文书
论文评审意见
2015/06/05 职场文书
个人收入证明格式
2015/06/24 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电