java调用winrar解压文件[rar.bz2.zip.....]

jopen 11年前

package com.czp;    import java.io.File;  import java.util.Properties;    public class UnRarFile {     public static void main(String[] args) {    UnRarFile unrar = new UnRarFile();    unrar.unRarFileCurDir(new File("d:/ftpd/pm/test/*.bz2"));   }     /**    * 解压文件    *     * @param target    * @param oldFile    */   public void unRarFile(File target, File oldFile) {    try {     if (isWindow()) {      String path = target.getParentFile().getAbsolutePath();      File tmp = target.getParentFile();      if (path.charAt(path.length() - 1) != ((char) File.separatorChar)) {       tmp = new File(path + File.separator);       if (!tmp.exists())        tmp.mkdirs();      }      String cmd2 = "C:\\Program Files\\WinRAR\\winrar.exe x -r -o+ -ibck -y "        + oldFile + " *.* " + tmp;      Runtime rt = Runtime.getRuntime();      Process pre = rt.exec(cmd2);      if (0 != pre.waitFor()) {       pre.destroy();      }      rt.runFinalization();      System.out.println(cmd2);     } else {      System.out.println("can't get rar command abort");     }    } catch (Exception e) {     System.out.println("解压发生异常");    }   }     /**    * 解压到当前目录    *     * @param filePath    */   public void unRarFileCurDir(File filePath) {    unRarFile(filePath, filePath);   }     /**    * 是否是window    *     * @return    */   public boolean isWindow() {    Properties properties = System.getProperties();    String os = properties.getProperty("os.name");    if (os != null && os.contains("Windows"))     return true;    return false;   }    }