日期:2014-05-17  浏览次数:20928 次

JAVA解压缩--如何判断解压完成
在百度上找的一段解压缩rar文件的代码,如何判断压缩包已经解压完成呢?
  解压完成后我还须要执行另外一些代码,比如我要获得解压出来的文件的文件名,调用这个方法后直接调用获得文件名的方法是获得不了的,因为压缩包中的文件还没解压出来当然就获得不了了。
  如何才能在解压完成后,在执行其他方法呢?
Java code

 /**  
      * 将1个RAR文件解压  
      * rarFileName 需要解压的RAR文件(必须包含路径信息以及后缀)  
      * destDir 解压后的文件放置目录  
      */  
      public static void unRARFile(String rarFileName, String destDir) {   
          if (!rarFileName.toLowerCase().endsWith(".rar")) {
              System.out.println("非rar文件!");
              return;
          }
          unrarCmd +=" "+ rarFileName + " " + destDir;   
          try {   
              Runtime rt = Runtime.getRuntime();   
              Process p = rt.exec(unrarCmd);
           } catch (Exception e) {   
          System.out.println("e.getMessage()="+e.getMessage());   
          }   
      }  



------解决方案--------------------
你的方法调用结束了,就是完成了。如果没有压缩完成,程序会一直组塞在这个方法上的:unRARFile
------解决方案--------------------
给unRARFile()方法加个返回值, 懂?
------解决方案--------------------
Process对象有个waitFor方法. 会使你当前进程暂停.
p.waitFor();
但是刚才在本机上用rar.exe测试的时候一直不停止了. 你可以在你的代码中加入p.waitFor()然后看看.
------解决方案--------------------
探讨

Process对象有个waitFor方法. 会使你当前进程暂停.
p.waitFor();
但是刚才在本机上用rar.exe测试的时候一直不停止了. 你可以在你的代码中加入p.waitFor()然后看看.

------解决方案--------------------
探讨

引用:

Process对象有个waitFor方法. 会使你当前进程暂停.
p.waitFor();
但是刚才在本机上用rar.exe测试的时候一直不停止了. 你可以在你的代码中加入p.waitFor()然后看看.

刚才看了下, 是我的命令行不对. 有个解压路径没有设置正确.
设置正确以后就好了. p.waitFor()会在解压完成后有……

------解决方案--------------------
http://topic.csdn.net/u/20090216/23/f4df4a38-c72f-492e-997e-794c46b1c39e.html
这里有,
接分