Node rar压缩/解压文件
暂时未发现node有好用的rar解压/压缩库,所以就自己搜索了一下,简单写了一个,并做了个简单的封装。
rar文件的压缩/解压是通过命令行来完成的,所以就需要node 的child_process库,这个npm i xxx就可以了。
大概了解了下rar的语法,这个在WinRAR的安装文件目录下可以看到,我的是:C:/Program Files/WinRAR/WinRAR.chm,
rar命令和rar参数都可以看到,这里就不贴图了,
压缩文件命令:rar a rarPath srcPath -y,其中rarPath是要压缩到的文件地址,例如test.rar,srcPath是要压缩的文件或者文件夹,-y表示如果有提示确认,同意所有操作
解压文件命令:rar x rarPath destPath -y,其中rarPath是压缩文件的地址,例如test.rar,destPath是解压的路径,-y表示如果有提示确认,同意所有操作
const fs = require('fs');
const exec = require('child_process').exec;/*** 执行cmd* @param cmd*/
function execute(cmd) {exec(cmd, {encoding: 'binary'}, function (err, stdout, stderr) {if (err) {console.log(`err:${err}`);}if (stderr) {console.log(`stderr:${stderr}`);}});
}/*** 判断文件或者路径是否存在* @param path* @param success 成功回调函数* @param error 错误回调函数*/
function exist(path, success, error) {fs.exists(path, (exists) => {if (exists) {success && success();} else {console.log(`${path} not exist and create...`);error && error();}});
}const rar = {/*** 压缩文件* @param config*/compress: function (config) {let cmd = `rar a ${config.rarPath} ${config.srcPath} -y`;exist(config.srcPath, () => {execute(cmd);});},/*** 解压文件* @param config*/decompress: function (config) {let cmd = `rar x ${config.rarPath} ${config.destPath} -y`;exist(config.rarPath, () => {exist(config.destPath, () => {execute(cmd);}, () => {fs.mkdir(config.destPath, (err) => {if (err) {console.log(err);} else {execute(cmd);}});});});}
};module.exports = rar;
测试代码:
测试结果:
Node rar压缩/解压文件相关推荐
- Linux 命令之 rar -- 压缩/解压文件
文章目录 一.命令介绍 二.子命令 三.常用选项 四.命令示例 (一)压缩指定文件或者更新压缩包内指定的文件 (二)压缩指定目录下的内容(不含目录本身) (三)创建自解压文件 (四)按完整路径解压文件 ...
- Asp.net调用RAR压缩 解压文件
//压缩 protected void btnY_Click(object sender, EventArgs e) { string rar; ...
- android zip解压出错,常见的压缩解压文件出错解决办法
您是否遇到过精力了好久下回来的压缩吧,结果在解压过程中出现错误的情况呢?比如说此解压失败或压缩文件文件已经损坏?导致解压文件失败.如果遇到这种问题,那就试试常见的压缩解压文件出错解决办法吧.凡事求人不 ...
- 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法
对于在Linux下解压大型的*.zip文件,相信大家一般都会通过使用winrar直接在smb中来进行解压的操作,虽然说最终可能能够解压但有时候会存在解压时间长或者网络原因出错等故障的情况出现.那么有没 ...
- java代码实现解压文件_Java压缩/解压文件的实现代码
用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...
- 命令行下(bat)使用 Lhaplus 自动 压缩 解压文件 (含参数设定说明)
命令行下(bat)使用 Lhaplus 自动 压缩 解压文件,参数设定 https://mp.csdn.net/console/editor/html/104400832 ■前言 准备测试数据,要压缩 ...
- WinRAR压缩解压文件
使用WinRAR压缩管理器压缩解压文件详细步骤如下: ■ 压缩文件 ① 鼠标右键需要压缩的文件,点击"添加到压缩文件",具体操作步骤如图所示: ② 压缩后的对应文件压缩包会显示在桌 ...
- zip包怎么解压oracle,使用jar与zip压缩解压文件的区别
使用jar命令压缩和解压文件不会继承原来的权限,切记! 而使用zip/unzip压缩解压文件则会保留文件原来的权限等信息,因此使用压缩解压的时候尽量使用专业的工具 下面是测试内容和结果: 1.首先确认 ...
- tar多线程压缩解压文件
tar多线程压缩解压文件 tar -czvf a.tar.gz ./* 测试每分钟压缩包a.tar.gz增长大约300M 安装多线程程序 yum -y install pigz 实测,4核的机器,2G ...
最新文章
- java消费kafka数据之后,进行堆积之后在插入数据库
- 腾云驾雾的计算,让你蒙圈了么?
- C语言(CED)王老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数(递归求解)
- ARMA模型的性质 1
- 任务之间的依赖(NSOperation)
- npm ERR! code EINTEGRITY 解决方案
- 汇编语言典型例子详解_单片机汇编语言经典一百例
- elementui二维表动态渲染
- SpringMVC类型转换遇到的问题
- [论文笔记]Fader Networks: Manipulating Images by Sliding Attributes(2017 NIPS)
- vue中的activated和deactivated
- ubuntu下git 常用命令
- 根据日期获取生肖,根据日期获取星座
- 常见商品期货量化易略
- 整合Springboot+Vue(基础框架)
- FinFET全面攻占iPhone 五分钟让你看懂FinFET
- mysql事件示例_卓象程序员:Mysql数据库事件使用与示例
- 从欧洲旅游到买房移民希腊的考察全记录!
- 北大版高数下册——二重积分的概念与性质
- NPC_3level_Inverter:基于MATLAB Simulink的中性点钳位三电平逆变器仿真模型