+-
Android以编程方式解压缩RAR文件
有没有办法以编程方式在 android 1.6中解压缩rar文件?

我已经尝试过JUNRAR,但有一些例外情况…

这是我的代码,使用junrar库成功打开rar文件后:

FileHeader fh=null;
  while(true)
  {
   fh=rar.nextFileHeader();
   if(fh==null) return false;    
   if(fh.isEncrypted()) continue;     
   //check file

   if(!fh.isDirectory() && fh.getFileNameString().toLowerCase().endsWith(".jpg")) 
   {
    try 
    {
      File f=new File(tmppath+covername);      //name of the destination file

      OutputStream stream = new FileOutputStream(f);            
      rar.extractFile(fh, stream);         //call junrar    

      stream.close();
      return true;
     } 
     catch (FileNotFoundException e1) 
     {
        // TODO Auto-generated catch block
         return false;
     }
     catch (RarException e) 
     {
      // TODO Auto-generated catch block
         return false;
     } 
     catch (IOException e) 
     {
        // TODO Auto-generated catch block
         return false;
     }    
   }

DDMS透视图显示此异常…?

ERROR/AndroidRuntime(2733): Uncaught handler: thread Thread-9 exiting due to uncaught exception

ERROR/AndroidRuntime(2733): java.lang.VerifyError: de.innosystec.unrar.unpack.ppm.SubAllocator

ERROR/AndroidRuntime(2733): at de.innosystec.unrar.unpack.ppm.ModelPPM.<init>(ModelPPM.java:73)

ERROR/AndroidRuntime(2733): at de.innosystec.unrar.unpack.Unpack.<init>(Unpack.java:43)

ERROR/AndroidRuntime(2733): at de.innosystec.unrar.Archive.doExtractFile(Archive.java:456)

ERROR/AndroidRuntime(2733): at de.innosystec.unrar.Archive.extractFile(Archive.java:440)

ERROR/AndroidRuntime(2733): at com.pmc.myRar.unrarCover(myRar.java:164)

ERROR/AndroidRuntime(2733): at com.pmc.myDataBase.addRar(myDataBase.java:541)

ERROR/AndroidRuntime(2733): at com.pmc.libraryActivity.addtoDB(libraryActivity.java:306)

ERROR/AndroidRuntime(2733): at com.pmc.libraryActivity$2.run(libraryActivity.java:240)

ERROR/AndroidRuntime(2733): at java.lang.Thread.run(Thread.java:1060)

谢谢,
pmc

最佳答案
您遇到了java.lang.Verify错误,很难确定.该库是否有源代码可以自己重新编译?该库可能是使用另一个jar的不同版本编译的.

解决方法:

这里有一个C库:http://www.unrarlib.org/download.html,它具有指向JNI接口的链接

另一个(非常简单)的替代方法是对该可执行文件使用Runtime.exec():http://forum.xda-developers.com/showthread.php?t=1015814

点击查看更多相关文章

转载注明原文:Android以编程方式解压缩RAR文件 - 乐贴网