转载请注明出处:https://blog.csdn.net/l1028386804/article/details/79734667
一、安装支持库
yum install -y gcc gcc-c++ autoconf wget
二、安装RAR
1.下载rar源码包
wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz
2.解压安装
tar -zxvf rarlinux-x64-5.3.0.tar.gz cd rar make && make install /bin/cp -f rar_static /usr/local/bin/rar && /bin/cp -f rar_static /usr/local/bin/unrar cd .. rm -rf rar
三、简单使用
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
四、Java调用解压命令源码
/** * RAR 5.0以上调用命令解压 * @author liuyazhuang * */ public class RarToFile { /* * cmd 压缩与解压缩命令 */ private static String rarCmd = "rar a "; private static String unrarCmd = "rar x "; /** * 将1个文件压缩成RAR格式 * rarName 压缩后的压缩文件名(不包含后缀) * fileName 需要压缩的文件名(必须包含路径) * destDir 压缩后的压缩文件存放路径 */ public static void RARFile(String rarName,String fileName,String destDir) { rarCmd += destDir + rarName + ".rar " + fileName; try { Runtime rt = Runtime.getRuntime(); Process p = rt.exec(rarCmd); }catch(Exception e) { System.out.println(e.getMessage()); } } /** * 将1个RAR文件解压 * rarFileName 需要解压的RAR文件(必须包含路径信息以及后缀) * destDir 解压后的文件放置目录 */ public static void unRARFile(String rarFileName,String destDir) { unrarCmd += rarFileName + " " + destDir; try { Runtime rt = Runtime.getRuntime(); Process p = rt.exec(unrarCmd); } catch (Exception e) { System.out.println(e.getMessage()); } } }
如果上述Java源码在运行的时候出现异常,则可参考如下Java代码调用解压命令解压
public void executeNewFlow() { Runtime run = Runtime.getRuntime(); File wd = new File("/bin"); System.out.println(wd); Process proc = null; try { proc = run.exec("/bin/bash",null,wd); } catch (IOException e) { e.printStackTrace(); } if (proc != null) { BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())),true); out.println("cd /home/test"); out.println("rar x test.rar"); out.println("exit");//这个命令必须执行,否则in流不结束。 try { String line; while ((line = in.readLine()) != null) { System.out.println(line); } proc.waitFor(); in.close(); out.close(); proc.destroy(); } catch (Exception e) { e.printStackTrace(); } } }