`
itace
  • 浏览: 178489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java解压缩zip

    博客分类:
  • java
阅读更多
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代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache Ant的核心库,它是一个基于Java的任务执行工具,广泛用于构建项目,其中包含了...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    二、Java解压缩ZIP文件 解压缩ZIP文件则可以使用`ZipInputStream`。以下是一个简单的解压示例: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void main...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...

    java解压缩ZIP文件

    ### Java解压缩ZIP文件:深度解析与实践 #### 核心知识点概览: - **Java I/O与网络数据流统一接口**:Java的1.1版本提供了统一的接口来处理I/O数据流与网络数据流,这使得数据的压缩、传输和解压缩变得简单而高效...

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...

    JAVA解压缩ZIP或RAR格式的文件

    在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...

    JAVA解压缩ZIP压缩文件(含中文名文件)完整DEMO

    本篇文章将详细讲解如何使用Java来解压缩ZIP格式的压缩文件,特别是那些包含中文文件名的压缩包。我们将探讨相关API的使用,以及解决中文文件名在解压过程中可能出现的问题。 1. **Java的压缩与解压缩库**: Java...

    java ZIP 解压缩

    java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...

    使用java解压缩zip文件

    本篇文章将深入探讨如何使用Java API来实现ZIP文件的解压缩,并提供详细的注释帮助理解代码逻辑。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件格式(如ZIP和GZIP)所需的所有类。其中...

    java解压缩zip文件

    zip格式是一种免费的压缩文件格式,我们可以通过java类库编写函数来解压缩它,实现winwar这类软件的功能。

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java

    本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...

    Java解压缩ZIP文件同时包含Jar包解决ZIP包中含有中文名称信息的文件

    博文链接:https://peng-jian-ming.iteye.com/blog/190572

    Java解压缩zip - 解压缩多个文件或文件夹实例

    首先,我们来看Java解压缩ZIP文件的核心代码。这里使用了Java标准库中的`java.util.zip`包,其中的`ZipOutputStream`和`ZipInputStream`类分别用于创建和读取ZIP文件。下面是一个简单的解压缩多个文件或文件夹的示例...

    Java工具类ZIP解压缩

    Java工具类ZIP解压缩Java工具类ZIP解压缩Java工具类ZIP解压缩

    java zipentry.jar 解决解压失败问题

    在Java编程中,处理压缩文件,如ZIP格式,是一项常见的任务。然而,当ZIP文件包含中文文件名时,可能会遇到解压失败的问题。这主要源于字符编码不匹配或处理方式不当。本文将深入探讨这个问题,并提供解决方案。 ...

Global site tag (gtag.js) - Google Analytics