记报错信息:java.lang.IllegalArgumentException: MALFORMED解决方案

在调用JDK自带的zipfile读取压缩包文件的时候,出现了以下错误:

SjXcmcFeignClient:124 - BaseFeignClient 拦截到【未知系统异常】Exception异常:

java.lang.IllegalArgumentException: MALFORMED[1]

at java.util.zip.ZipCoder.toString(ZipCoder.java:65)

at java.util.zip.ZipFile.getZipEntry(ZipFile.java:583)

at java.util.zip.ZipFile.access$900(ZipFile.java:60)

at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:539)

at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:514)

at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:495)

at com.xcwlkj.ksyw.web.KsjhglSjXcmcFeignClient.updatekszp(KsjhglSjXcmcFeignClient.java:962)

......

后来经过检查,发现压缩包内有一个文件的名字带有中文,解析压缩包中,读取中文文件导致报错,然后查看了Zipfile的构造方法,发现还有一个设置字符编码的参数

public ZipFile(String name, Charset charset) throws IOException

{

this(new File(name), OPEN_READ, charset);

}

于是尝试设置zip的字符编码为GBK格式,如下:

ZipFile zipFile=new ZipFile(zipPath,Charset.forName("GBK"));

代码重新编译后执行,问题得到解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值