最近在在使用zip 解压时,使用JDK1.7及以上版本在解压时,某些文件会报异常

  1. Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED
  2. at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
  3. at java.util.zip.ZipFile.getZipEntry(ZipFile.java:567)
  4. at java.util.zip.ZipFile.access$900(ZipFile.java:61)
  5. at java.util.zip.ZipFile$ZipEntryIterator.next(ZipFile.java:525)
  6. at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:500)
  7. at java.util.zip.ZipFile$ZipEntryIterator.nextElement(ZipFile.java:481)
  8. at zip.ReadingArchive.unzip(ReadingArchive.java:36)
  9. at zip.ReadingArchive.unzip(ReadingArchive.java:82)
  10. at zip.ReadingArchive.unzip(ReadingArchive.java:82)
  11. at main.Main.main(Main.java:13)
  12.  
  13. 究其原因是因为文件名中文所致,而ZIPFile默认使用UTF-8,在遇到解压非UTF-8的时候就会报错
  1. public ZipFile(File file, int mode) throws IOException {
    this(file, mode, StandardCharsets.UTF_8);
    }
  2.  
  3. 最终我用的解决方法为
  1. Charset gbk = Charset.forName("GBK");
    ZipFile zipFile = new ZipFile(zipFileName, gbk);
  2.  
  3. 当然这个肯定不适用与所有环境,可以使用的修改字符集来解决,仅供参考。

JAVA zip解压 MALFORMED 错误的更多相关文章

  1. Java zip解压,并遍历zip中的配置文件 .cfg或.properties

    1.解析cfg或properties配置文件 讲配置文件,读取,并封装成为map类型数据 /** * 解析cfg文件 * * @param cfgFile * @return */ public st ...

  2. java zip解压

    /** * 解压文件到指定目录 * @param zipFile * @param descDir * @author sqdll */@SuppressWarnings("rawtypes ...

  3. java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)

    // java批量解压文件夹下的所有压缩文件(.rar..zip..gz..tar.gz) 新建工具类: package com.mobile.utils; import com.github.jun ...

  4. Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)

    本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...

  5. MySQL For Windows Zip解压版安装

    前言 Windows 下 MySQL 有msi和zip解压安装版两种,而zip版只需解压并做简单配置后就能使用,我个人比较喜欢这种方式. 注意我们这里说的MySQL是指MySQL服务器,有很多初学的同 ...

  6. windows下tomcat zip解压版安装方法

    下面记录一下在win7(32位)系统下,安装zip解压版的方法: 一.下载zip压缩包 地址:http://tomcat.apache.org/download-80.cgi 二.解压 我把解压包解压 ...

  7. mysql5.5.x.zip 解压版安装教程

    一,前言 记一次安装解压版的mysql 5.5的经过,参考了一些文章,也遇到了一些错误,最终都安装成功了.在这里记录一下安装的过程,一方面自己做一个记录,领一方面给大家提供一份参考. 二,环境 1,w ...

  8. CentOS7下zip解压和unzip压缩文件

    1.安装zip.unzip应用. yum install zip unzip

  9. 解决ubuntu中zip解压的中文乱码问题

    转自解决ubuntu中zip解压的中文乱码问题 在我的ubuntu12.10中,发现显示中文基本都是正常的,只有在解压windows传过来的zip文件时,才会出现乱码.所以,我用另一个方法解决中文乱码 ...

随机推荐

  1. GeoTools应用-DATA

    转自:http://blog.csdn.net/cdl2008sky/article/details/7266785 一.Geotools The Open Source Java GIS Toolk ...

  2. C#入门经典学习笔记一

    这篇主要讲C#的一些语法. 1.委托 委托类型声明的格式如下: public delegate void TestDelegate(string message); delegate 关键字用于声明一 ...

  3. Off-by-one错误

    在迭代循环中,误用> < ≥ ≤符号,有可能导致循环次数多一次或者少一次,就会引发off-by-one错误,混用半开区间和闭区间时,也经常发生此类错误,解决方法是利用最小的输入值去测试代码 ...

  4. HDOJ/HDU 1015 Safecracker(枚举、暴力)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  5. Android学习笔记(十)BroadcastReceiver初体验

    BroadcastReceiver是Android系统的四大组件之一,本质是一种全局的监听器,用于接收系统全局的广播消息.真因为如此,BroadcastReceiver可以很方便的是实现系统中不同组件 ...

  6. Bzoj 2456: mode 数论,众数

    2456: mode Time Limit: 1 Sec  Memory Limit: 1 MBSubmit: 2843  Solved: 1202[Submit][Status][Discuss] ...

  7. 网页局部刷新的办法。javascript+frame 或者ajax原理

    <frame>标签 + javascriptajax (DWR \ jquery \ extjs \ vs 下的ScriptManager和UpdatePanel控件)

  8. Microsoft.Jet.Oledb.4.0 提供者並未登錄於本機電腦上

    最近把一些 .NET2.0 的專案從 x86 的 Server 搬到 x64 的 Server 上,一直都相安無事,直到今天才發現使用 Oledb 讀取 Excel 的時候會跳出「'Microsoft ...

  9. Verilog HDL模块的结构

    一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字 ...

  10. 抓取用户openid

    获取用户微信openid用户无感知情况下 传参为 appid appsecret 当前网址 session_name名称 <?php //获取微信的openid function get_wx_ ...