import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; public class ZipGenerate { /** * 压缩成zip包 * * @param souceFileName * @param destFileName */ private void zip(String souceFileName, String destFileName){ try { File file = new File(souceFileName); if(file.exists()){ FileOutputStream fileOut = new FileOutputStream(destFileName); ZipOutputStream out = new ZipOutputStream(fileOut); String base=""; traverseFile(file, out,base); out.close(); fileOut.close(); } } catch (IOException e) { e.printStackTrace(); } } /** * 循环遍历文件夹的所有文件 * @param file * @param out * @param base * @throws IOException */ private void traverseFile(File file, ZipOutputStream out,String base) throws IOException { if (file.isDirectory()) { File[] files = file.listFiles(); base=base+file.getName()+"/"; out.putNextEntry(new ZipEntry(base)); // System.out.println(base); for (File f : files) { traverseFile(f, out,base); } } else { base=base+file.getName(); // System.out.println(base); out.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(file); int b; byte[] by = new byte[1024]; while ((b = in.read(by)) != -1) { out.write(by, 0, b); } in.close(); } } /** * 解压缩文件 * @param zipname */ private void unzip(String zipname){ try { File zipFile = new File(zipname); String dictory_name=zipFile.getParent(); File top_dictory=new File(dictory_name); if(!top_dictory.exists()){ top_dictory.mkdirs(); } ZipFile zip = new ZipFile(zipFile); for (Enumeration entries=zip.entries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry)entries.nextElement(); if(entry.isDirectory()){ File dictory=new File(dictory_name+File.separator+entry.getName()); if(!dictory.exists()){ dictory.mkdirs(); } }else{ InputStream in = zip.getInputStream(entry); String path=dictory_name+File.separator+entry.getName(); File file=new File(path); OutputStream out = new FileOutputStream(file); int b; byte[] by = new byte[1024]; while ((b = in.read(by)) != -1) { out.write(by, 0, b); } out.close(); in.close(); } } } catch (ZipException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // File f=new File("E:\\temp\\hello.zip"); // f.delete(); ZipGenerate z = new ZipGenerate(); //压缩 // z.zip("E:\\temp\\hello", "E:\\temp\\hello.zip"); //解压 z.unzip("E:\\temp\\hello.zip"); } }
相关推荐
标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache Ant的核心库,它是一个基于Java的任务执行工具,广泛用于构建项目,其中包含了...
二、Java解压缩ZIP文件 解压缩ZIP文件则可以使用`ZipInputStream`。以下是一个简单的解压示例: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void main...
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...
### Java解压缩ZIP文件:深度解析与实践 #### 核心知识点概览: - **Java I/O与网络数据流统一接口**:Java的1.1版本提供了统一的接口来处理I/O数据流与网络数据流,这使得数据的压缩、传输和解压缩变得简单而高效...
首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...
在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...
本篇文章将详细讲解如何使用Java来解压缩ZIP格式的压缩文件,特别是那些包含中文文件名的压缩包。我们将探讨相关API的使用,以及解决中文文件名在解压过程中可能出现的问题。 1. **Java的压缩与解压缩库**: Java...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
本篇文章将深入探讨如何使用Java API来实现ZIP文件的解压缩,并提供详细的注释帮助理解代码逻辑。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件格式(如ZIP和GZIP)所需的所有类。其中...
zip格式是一种免费的压缩文件格式,我们可以通过java类库编写函数来解压缩它,实现winwar这类软件的功能。
本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...
博文链接:https://peng-jian-ming.iteye.com/blog/190572
首先,我们来看Java解压缩ZIP文件的核心代码。这里使用了Java标准库中的`java.util.zip`包,其中的`ZipOutputStream`和`ZipInputStream`类分别用于创建和读取ZIP文件。下面是一个简单的解压缩多个文件或文件夹的示例...
Java工具类ZIP解压缩Java工具类ZIP解压缩Java工具类ZIP解压缩
在Java编程中,处理压缩文件,如ZIP格式,是一项常见的任务。然而,当ZIP文件包含中文文件名时,可能会遇到解压失败的问题。这主要源于字符编码不匹配或处理方式不当。本文将深入探讨这个问题,并提供解决方案。 ...