Java ZipFile 使用

jvzijiang 2008-11-06 09:11:05
我调用ZipFile zfile = new ZipFile("D:\\viewer12.jar");工作的很好,
但是我换成ZipFile zfile = new ZipFile("D:\\20070609213223617.rar");就得到一个java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:203)
at java.util.zip.ZipFile.<init>(ZipFile.java:84)
at my.test.FileStudy.main(FileStudy.java:25)

哪位大侠帮帮我?我用的是JDK1.5.0_11

试了一下,.zip文件也是可以得。似乎只有.rar文件不行。哎,郁闷
又试图rename成.zip,继续失败

那么如果我想用java打开.rar文件,怎么做呢?
...全文
386 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhoho 2008-11-06
  • 打赏
  • 举报
回复
据说:
"rar基本上来说不可以通过java解压缩,rar是有专利的,sun只提供了zip的压缩解压缩类"
barech 2008-11-06
  • 打赏
  • 举报
回复
以前用过java自带的压缩工具,似乎存在一定的问题

后来改用了Apache提供的压缩工具API,那个能够压缩和解压.rar格式的
pauliuyou 2008-11-06
  • 打赏
  • 举报
回复
rar 和 zip 不一样
chenhoho 2008-11-06
  • 打赏
  • 举报
回复
java.util.jar.JarFile
jvzijiang 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 buffoon 的回复:]
http://www.adarshr.com/papers/raroscope

这个也许你可以用
[/Quote]

谢谢,我现在试试
悠云guo 2008-11-06
  • 打赏
  • 举报
回复
http://www.adarshr.com/papers/raroscope

这个也许你可以用
getter 2008-11-06
  • 打赏
  • 举报
回复
...RAR的格式和ZIP一樣嗎?
ouyangxiaokang6 2008-11-06
  • 打赏
  • 举报
回复
你用java.util.zip包的类进行压缩和解压,这样是没有问题的。但是你要是在windows环境下自己做一个压缩文件用java.util.zip.Zipfile来定义就会报这个错误。
jvzijiang 2008-11-06
  • 打赏
  • 举报
回复
我试过了,http://www.adarshr.com/papers/raroscope 可以解,但是有一些问题。
无论如何,谢谢
Java实现压缩与解压缩ZIP   import java.io.BufferedInputStream;   import java.io.BufferedOutputStream;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.util.zip.ZipEntry;   import java.util.zip.ZipOutputStream;   public class Zip {   static final int BUFFER = 2048;   public static void main(String argv[]) {   try {   BufferedInputStream origin = null;   FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");   ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(   dest));   byte data[] = new byte[BUFFER];   File f = new File("e:\\test\\a\\");   File files[] = f.listFiles();   for (int i = 0; i < files.length; i++) {   FileInputStream fi = new FileInputStream(files[i]);   origin = new BufferedInputStream(fi, BUFFER);   ZipEntry entry = new ZipEntry(files[i].getName());   out.putNextEntry(entry);   int count;   while ((count = origin.read(data, 0, BUFFER)) != -1) {   out.write(data, 0, count);   }   origin.close();   }   out.close();   } catch (Exception e) {   e.printStackTrace();   }   }   }   解压缩的   import java.io.BufferedInputStream;   import java.io.BufferedOutputStream;   import java.io.File;   import java.io.FileOutputStream;   import java.util.Enumeration;   import java.util.zip.ZipEntry;   import java.util.zip.ZipFile;   public class UnZip {   static final int BUFFER = 2048;   public static void main(String argv[]) {   try {   String fileName = "E:\\test\\myfiles.zip";   String filePath = "E:\\test\\";   ZipFile zipFile = new ZipFile(fileName);   Enumeration emu = zipFile.entries();   int i=0;   while(emu.hasMoreElements()){   ZipEntry entry = (ZipEntry)emu.nextElement();   //会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。   if (entry.isDirectory())   {   new File(filePath + entry.getName()).mkdirs();   continue;   }   BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));   

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧