壓縮/解壓 zip 時遇到 java.lang.IllegalArgumentException: MALFORMED


因為zip文件名為中文,或者壓縮內容有中文

解決方法:

錯誤詳情:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
at java.util.zip.ZipFile.getZipEntry(ZipFile.java:529)
at java.util.zip.ZipFile.access$900(ZipFile.java:56)
at java.util.zip.ZipFile$1.nextElement(ZipFile.java:511)
at java.util.zip.ZipFile$1.nextElement(ZipFile.java:481)
at org.zeroturnaround.zip.ZipUtil.iterate(ZipUtil.java:366)
at org.zeroturnaround.zip.ZipUtil.unpack(ZipUtil.java:772)
at org.zeroturnaround.zip.ZipUtil.unpack(ZipUtil.java:755)

at com.webthk.map.utils.ImageCutUtil.main(ImageCutUtil.java:29)

 

解決辦法:

將原有解壓插件換為基於org.apache.ant 的解壓方法

另,解壓rar可以用java-unrar-0.3.jar解決 (參考http://blog.csdn.net/zheng2008hua/article/details/6998345)

(參考http://www.blogjava.net/icewee/archive/2012/05/26/379267.html)

原因:

有兩種可能:java路徑問題 將 " \ " 換為 " \\ " 即可

是因為java.util.zip下的格式轉換有問題 ,jdk中的zip存在字符編碼的問題。windows下壓縮的默認編碼是GBK(話說可以通過修改jdk解決,技術難度也太高了,未親測)

http://blog.csdn.net/u012730333/article/details/42215667

http://blog.csdn.net/aitangyong/article/details/40430467

http://blog.csdn.net/zheng2008hua/article/details/6998345


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM