Java 文件解压缩实现代码

 更新时间:2013年12月13日 16:35:32   作者:  
这篇文章主要介绍了Java 文件解压缩实现代码,有需要的朋友可以参考一下

Java实现压缩文件的解压缩操作,缺点是压缩文件内不能含有文件名为中文的的文件,否则会出现如下错误:

复制代码 代码如下:

Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED
 at java.util.zip.ZipCoder.toString(Unknown Source)
 at java.util.zip.ZipInputStream.readLOC(Unknown Source)
 at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
 at com.javatest.techzero.gui.ZipFileDemo.main(ZipFileDemo.java:22)

代码:

复制代码 代码如下:

package com.javatest.techzero.gui;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class ZipFileDemo {
 @SuppressWarnings("resource")
 public static void main(String args[]) throws Exception {
  File file = new File("d:" + File.separator + "test.zip");
  File outFile = null;
  ZipFile zipFile = new ZipFile(file);
  ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
  ZipEntry entry = null;
  InputStream input = null;
  OutputStream out = null;
  while ((entry = zipInput.getNextEntry()) != null) {
   System.out.println("开始解压缩" + entry.getName() + "文件。。。");
   outFile = new File("d:" + File.separator + entry.getName());
   if (!outFile.getParentFile().exists()) {
    outFile.getParentFile().mkdir();
   }
   if (!outFile.exists()) {
    outFile.createNewFile();
   }
   input = zipFile.getInputStream(entry);
   out = new FileOutputStream(outFile);
   int temp = 0;
   while ((temp = input.read()) != -1) {
   <SPAN style="WHITE-SPACE: pre"> </SPAN>//System.out.println(temp);
    out.write(temp);
   }
   input.close();
   out.close();
  }
  System.out.println("Done!");
 }
}

相关文章

  • Java JDK 二分法 分析demo(推荐)

    Java JDK 二分法 分析demo(推荐)

    下面小编就为大家带来一篇Java JDK 二分法 分析demo(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • tomcat的keepAlive参数深入探究

    tomcat的keepAlive参数深入探究

    这篇文章主要为大家介绍了tomcat的keepAlive参数深入探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Spring解决循环依赖的方法(三级缓存)

    Spring解决循环依赖的方法(三级缓存)

    今天,我们要说的是spring是如何解决循环依赖的。对于一个问题说解决之前,我们首先要先明确形成问题的本因。那么循环依赖,何为循环依赖呢?感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • IntelliJ IDEA 2022.2.1最新永久激活破解教程(持续更新)

    IntelliJ IDEA 2022.2.1最新永久激活破解教程(持续更新)

    这篇文章主要介绍了IntelliJ IDEA 2022.2.1最新永久激活破解教程(持续更新),小编测试这种激活工具也适用idea2022以下所有版本,本篇教程整理的比较详细,汇总了idea各个版本的激活工具,激活方法多种多样,大家选择一种即可,感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • Springboot 使用maven release插件执行版本管理及打包操作

    Springboot 使用maven release插件执行版本管理及打包操作

    maven-release-plugin 可用于构建release版本项目,实现自动打tag、递增版本号、分发release版本jar包至仓库,接下来通过本文给大家介绍Springboot 使用maven release插件执行版本管理及打包操作,需要的朋友可以参考下
    2022-03-03
  • AQS同步组件CyclicBarrier循环屏障用例剖析

    AQS同步组件CyclicBarrier循环屏障用例剖析

    这篇文章主要为大家介绍了AQS同步组件CyclicBarrier循环屏障用例剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Mybatis SQL日志如何转换为可执行sql

    Mybatis SQL日志如何转换为可执行sql

    这篇文章主要介绍了Mybatis SQL日志如何转换为可执行sql问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Mybatis 一级缓存与二级缓存的实现

    Mybatis 一级缓存与二级缓存的实现

    mybatis作为一个流行的持久化工具,缓存必然是缺少不了的组件。通过这篇文章,就让我们来了解一下一级缓存与二级缓存的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 关于二分法查找Java的实现及解析

    关于二分法查找Java的实现及解析

    这篇文章主要介绍了关于二分法查找Java的实现及解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java如何操作MongoDB常用API文档

    Java如何操作MongoDB常用API文档

    这篇文章主要介绍了Java如何操作MongoDB常用API文档,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论