如何使用shell调用Winrar压缩及解压缩文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用shell调用Winrar压缩及解压缩文件相关的知识,希望对你有一定的参考价值。

参考技术A 首先你电脑上要安装winrar压缩软件,然后在压缩文件上点鼠标右键,选择“解压文件”或者“解压到当前文件夹”

C#和Java的文件压缩。

我用Java写了个程序压缩文件,由于找到的包不支持生成rar格式的压缩文件,最后用程序调用WinRaR的Rar.exe完成了程序。 发现压缩一个80M的文件,需要40秒。
同事的C#的程序用了ICSharpCode.SharpZipLib.dll。 发现压缩一个80M的文件,需要20秒。
问题:Java的比C#慢没什么疑问,但奇怪的是我用WinRAR压缩一个80M的文件也是接近40秒,C#的程序怎么会比WinRAR快(注意是rar格式)?
还有ICSharpCode.SharpZipLib.dll,不是不支持rar格式吗什么时候可以了,我记得rar格式的压缩算法还没公开?

zip和rar用的不同的压缩算法,
zip的比较简单,计算复杂度低,压缩比也低。zip的deflate算法公开,经过几十年优化已被总结出很快的实现。内存最小可以只要32K
rar是私有格式,压缩比较高,内存也需要典型的4MB。
刚出来时,rar针对32位386设计的,硬件要求比zip高一个数量级。
另外在进程调用子进程,系统IO开销,和对子进程分配的较小的执行优先级。都可能导致速度慢。追问

还有ICSharpCode.SharpZipLib.dll,不是不支持rar格式吗什么时候可以了,我记得rar格式的压缩算法还没公开?

追答

SharpZipLib 并不支持rar。
支持, gzip, zlib and raw deflate, as well as BZip2

你用SharpZipLib生成rar,很可能是tar误认,或者zip冒充的rar文件。

参考技术A java只支持zip,tar等跨平台的压缩格式 。。rar是window的。

以上是关于如何使用shell调用Winrar压缩及解压缩文件的主要内容,如果未能解决你的问题,请参考以下文章

批处理winrar命令 ,如何批量解压缩到每个单独的文件夹?

7 zip压缩的文件winrar能打开吗

Linux 使用 tar 命令打包压缩及解压缩文件夹

Linux下的tar归档及解压缩功能详解

linux命令行打包压缩及解压缩

C#和Java的文件压缩。