解压zip文件出错!java.lang.IllegalArgumentException

行近远山 2006-12-09 06:39:50
错误完整的报告如下:
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:238)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:73)
at cn.qtone.cxyx.cp.pubFun.Decompress.unzip(Decompress.java:55)
at cn.qtone.cxyx.cp.pubFun.Decompress.decompress(Decompress.java:25)
at cn.qtone.cxyx.cp.nrkgl.Content.serviceAction(Content.java:166)
at cn.qtone.cxyx.cp.nrkgl.Content.doGet(Content.java:142)
at cn.qtone.cxyx.cp.nrkgl.Content.doPost(Content.java:408)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterC
hain.java:106)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain
.java:178)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocatio
n.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267
)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
at java.lang.Thread.run(Thread.java:595)

在网上也找到了相应的解决办法,但是不成功~~~流汗~~搞了一天了~~~郁闷啊~~~~

网上解决方法是:

4.新增member,这个member记录编码方式
private String encoding="UTF-8";
5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)
public CZipInputStream(InputStream in,String encoding) {
super(new PushbackInputStream(in,512),new Inflater(true),512);
usesDefaultInflater = true;
if(in == null) {
throw new NullPointerException("in is null");
}
this.encoding=encoding;
}

6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len));这一行,将它改成如下:
ZipEntry e=null;
try
{
if (this.encoding.toUpperCase().equals("UTF-8"))
e=createZipEntry(getUTF8String(b, 0, len));
else
e=createZipEntry(new String(b,0,len,this.encoding));
}
catch(Exception byteE)
{
e=createZipEntry(getUTF8String(b, 0, len));
}


但是,我这边就是不行,在创建对象这一步挂了
resin没有任何提示,也没有执行下面的语句~~~
高手请指教啊
...全文
1941 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ming4098 2006-12-12
  • 打赏
  • 举报
回复
行近远山 2006-12-12
  • 打赏
  • 举报
回复
编码先压进去再执行??

压缩包是用户压的~

我把压缩包再压一次?

我曾经也这么想过,但是后来想想,压缩的话只是针对当前文件吧?至于这个文件之前是什么格式应该不会受到什么影响~~
行近远山 2006-12-12
  • 打赏
  • 举报
回复
我顶~
www203 2006-12-12
  • 打赏
  • 举报
回复
建议楼主到中文操作系统试一下看看
如果是环境的欢喜
可以把环境的编码先压进去再执行
行近远山 2006-12-12
  • 打赏
  • 举报
回复
还是自己up
chashui 2006-12-12
  • 打赏
  • 举报
回复
行近远山 2006-12-12
  • 打赏
  • 举报
回复
to cm4ever:

我电脑装的是英文版xp sp2

但是我不确定我的电脑的字符集,不过像eclipse这样地软件,它识别本机时是中文

不知道哪里可以确切的查看本机的默认字符集呢?
禽兽v5 2006-12-12
  • 打赏
  • 举报
回复
首先这台电脑是不是zh_cn的字符集?比如*nix要set LC_ALL=zh_cn.GB18030,然后系统本身有对应的中文字体。其他的就容易了...
行近远山 2006-12-12
  • 打赏
  • 举报
回复
其实最主要的问题是在客户那里用winrar压缩他们要上传文件的编码方式与java.util.zip中解压缩的编码方式不同

但是解决这个问题的方法——修改java.util.zip.ZipInputStream和ZipOutputStream两个类 在我这里却行不通,当new对象的时候就中断了,也不给点出错信息~

娘的,郁闷ing……
the7thsense 2006-12-12
  • 打赏
  • 举报
回复
帮顶
行近远山 2006-12-11
  • 打赏
  • 举报
回复
找了两天,郁闷啊~~~
同事做过用ant压缩再解压缩
但是他在压缩的时候就设置好编码方式的,因此解压缩时不会出错,但是我的是让客户自己压缩再上传的,不能设定压缩的编码方式

哪位高手或者前辈有解决过这个问题啊,帮我一下,谢谢呀~~~~~~~~~~~~
hdhmail2000 2006-12-11
  • 打赏
  • 举报
回复
应该是编码问题
你搜索下怎么解决编码问题的
行近远山 2006-12-11
  • 打赏
  • 举报
回复
怎么没人回呀?也没人顶~~~~~~~~~~
难道没人来看过着个帖????
d34982442 2006-12-11
  • 打赏
  • 举报
回复
顶一个~望高手来解答哦
行近远山 2006-12-11
  • 打赏
  • 举报
回复
自己顶起来~~~~~
高手速度~~~
行近远山 2006-12-09
  • 打赏
  • 举报
回复
忘了提一下,如果不是中文文件,一切OK
所以应该是编码的问题

62,614

社区成员

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

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