如何使用Java程序将文本文件压缩成RAR格式

3

有没有Java库可以将纯文本文件(.txt)压缩为WinRAR格式(.rar)。我一直在谷歌上搜索,但找不到任何相关的库。


似乎是与https://dev59.com/pHRB5IYBdhLWcg3wpopm重复的问题。 - Aleks G
请看这里http://www.catacombae.org/jlrarx.html#rarlib,然后再看这里http://www.unrarlib.org/,在这上面包装一个JNI层应该不成问题。 - BigMike
7个回答

7

你总是可以做到

Runtime.getRuntime().exec("rar -a somefile.txt"); 

这看起来不错。但是一旦RAR文件被压缩,我们是否有控制权?因为我想将该RAR文件复制到其他位置。 - JavaGeek
1
创建一个临时目录,将文件压缩到该目录中,将临时目录的内容复制到所需位置,然后删除临时目录。您可以使用批处理脚本完成此操作,并使用Runtime.getRuntime().exec调用该脚本。 - dov.amir

3

我认为RAR不是开源格式。我更愿意使用ZIP - 它内置在Java中。


我尝试压缩一个7GB的文件,但是它说无法对大于4GB文件大小的文件进行压缩。 - JavaGeek

2

RAR是一种专有格式,我不知道有任何库可以创建它(虽然似乎有一些可以读取它的库)。为什么不使用另一种更开放的格式,如7zip(用于压缩),或普通的Zip格式(用于通用兼容性)?


+1 RAR既是专有又是封闭的。我一直很好奇它在极客文化中为什么会如此受欢迎。 - leonbloy
我没有尝试过7zip,但对于Zip格式,限制只有4 GB。我们无法压缩超过4 GB的文件。 - JavaGeek
1
Java中的4GB限制已经存在很长时间了,但显然不再是问题(虽然我自己没有测试过)。7z支持大小高达16000000000 GB的文件。 - Amadan

1

使用RAR的一个原因:它比ZIP好太多了。例如:我们的一个生产打印文件中有很多重复内容(包括图像)。该文件大小为142 MB,压缩后约为80MB。RAR似乎可以检测到这些重复内容,最终的文件大小甚至不到2MB!


1
(从这个问题中,这个是一个重复的问题 - RAR archives with java
你可以尝试使用JUnRar,它是“用纯Java实现的RAR处理API”(引用自该网站)。

只读取 rar 格式,大多数(如果不是全部)开源工具无法写入 rar 格式。 - josefx
可能是这样,所以我不会声称它是我的答案。 - Aleks G

1

不,你不能这样做。只有 WinRAR 可以创建 rar 文件。它只有一个 unrar 库。


0

您所请求的页面不可用 :( - David Navarro Astudillo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接