`

Java解压缩zip文件

    博客分类:
  • Java
阅读更多

下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处理zip文件的代码处理的,但是不能处理中文名称的文件,要不然就会出错。

 

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

/**
 * 不能处理中文文件名
 */
public class UnZip 
{
	private static final int buffer = 2048; 
	
	public static void main(String[] args) 
	{
		unZip("D:\\ss\\test.zip");
	}

	public static void unZip(String path) 
	{
		int count = -1;
		int index = -1;
		
		String savepath = "";
		boolean flag = false;
		
		savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";

		try 
		{
			BufferedOutputStream bos = null;
			ZipEntry entry = null;
			FileInputStream fis = new FileInputStream(path); 
			ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
			
			while((entry = zis.getNextEntry()) != null) 
			{
				byte data[] = new byte[buffer]; 

				String temp = entry.getName();
				
				flag = isPics(temp);
				if(!flag)
					continue;
				
				index = temp.lastIndexOf("/");
				if(index > -1)
					temp = temp.substring(index+1);
				temp = savepath + temp;
				
				File f = new File(temp);
				f.createNewFile();

				FileOutputStream fos = new FileOutputStream(f);
				bos = new BufferedOutputStream(fos, buffer);
				
				while((count = zis.read(data, 0, buffer)) != -1) 
				{
					bos.write(data, 0, count);
				}

				bos.flush();
				bos.close();
			}

			zis.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static boolean isPics(String filename)
	{
		boolean flag = false;
		
		if(filename.endsWith(".jpg") || filename.endsWith(".gif")  || filename.endsWith(".bmp") || filename.endsWith(".png"))
			flag = true;
		
		return flag;
	}
}

 

下面是用的apache的zip文件处理包进行处理的,可以处理中文名称的文件,功能跟上面的一样。

 

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

/**
 * 可以处理中文文件名
 */
public class UnZip2 
{
	private static final int buffer = 2048;
	
	public static void main(String[] args)
	{
		unZip("D:\\ss\\test.zip");
	}
	
	public static void unZip(String path)
	{
        int count = -1;
        int index = -1;
        String savepath = "";
		boolean flag = false;
		
		File file = null; 
        InputStream is = null;  
        FileOutputStream fos = null;  
        BufferedOutputStream bos = null;
        
		savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";

        try
        { 
        	ZipFile zipFile = new ZipFile(path); 

        	Enumeration<?> entries = zipFile.getEntries();
        	
            while(entries.hasMoreElements())
            { 
            	byte buf[] = new byte[buffer]; 
            	
                ZipEntry entry = (ZipEntry)entries.nextElement(); 
                
                String filename = entry.getName();
                index = filename.lastIndexOf("/");
				if(index > -1)
					filename = filename.substring(index+1);
				
                filename = savepath + filename;
                
                flag = isPics(filename);
                if(!flag)
                	continue;
                
                file = new File(filename); 
                file.createNewFile();
                
                is = zipFile.getInputStream(entry); 
                
                fos = new FileOutputStream(file); 
                bos = new BufferedOutputStream(fos, buffer);
                
                while((count = is.read(buf)) > -1)
                { 
                    bos.write(buf, 0, count ); 
                } 
                
                fos.close(); 

                is.close(); 
            } 
            
            zipFile.close(); 
            
        }catch(IOException ioe){ 
            ioe.printStackTrace(); 
        } 
    } 

	public static boolean isPics(String filename)
	{
		boolean flag = false;
		
		if(filename.endsWith(".jpg") || filename.endsWith(".gif")  || filename.endsWith(".bmp") || filename.endsWith(".png"))
			flag = true;
		
		return flag;
	}
}

 

 

5
1
分享到:
评论
3 楼 u012380013 2014-05-13  
加上bos.flush(); 是成功的
2 楼 yrclsgo 2013-07-11  
没有 bos.flush(); 目测不会成功
1 楼 longzy87 2012-06-01  
    

相关推荐

    java 解压缩zip文件

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

    java解压缩ZIP文件

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

    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文件

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

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

    `ZipInputStream`是用于读取ZIP文件的输入流,而`ZipEntry`代表ZIP文件中的一个条目,即一个单独的压缩文件。 解压ZIP文件的基本步骤如下: 1. 创建一个`FileInputStream`对象,指向ZIP文件路径。 2. 使用`...

    使用java解压缩zip文件

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

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

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

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

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

    poi.zip java读取excel文件

    Java 读取 Excel 文件是许多开发任务中的常见需求,Apache POI 是一个广泛使用的开源库,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在本案例中,提供的压缩包 "poi.zip" 包含了两个子文件:poi-bin-...

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

    以下是解压缩ZIP文件的基本步骤: 1. 创建一个`FileInputStream`对象,指向ZIP文件。 2. 使用`FileInputStream`创建`ZipInputStream`对象。 3. 通过`ZipInputStream`的`getNextEntry()`方法遍历ZIP文件中的每个条目...

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

    Java的`java.util.zip`包提供了对ZIP文件的支持,包括`ZipInputStream`和`ZipOutputStream`类用于读写ZIP文件,以及`ZipEntry`类来代表ZIP文件中的单个条目。当我们尝试用这些类解压含有中文名的文件时,如果未正确...

    java解压.zip或.jar文件.pdf

    在本篇文章中,我们将探讨 Java 解压缩文件的操作,包括解压缩 ZIP 和 JAR 文件,并讨论如何使用 Java 解压缩 RAR 文件。 解压缩 ZIP 和 JAR 文件 ZIP 和 JAR 文件是两种常见的压缩文件格式,Java 提供了 ...

    java excel 读取 用 zip 方式。不用第三方包

    /** * 根据 策划的配置表来生成 json * excel 目前使用的版本为2007,其他版本未测试... * 读取文件 一般用于本地文件的生成, * 二进制的方式,一般用于 后台管理界面 的文件上传后的处理。 * @author wgq * */

    java解压缩zip代码与用到的jar包

    本主题将深入讲解如何使用Java来解压缩ZIP文件,并介绍相关库和具体实现方法。 标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache ...

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

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

    java 操作Zip文件(压缩、解压、加密).zip

    - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过XML格式的构建文件来定义任务,这使得整个过程可配置且易于自动化。 在实际应用中,如果你的项目依赖于这两个库,...

Global site tag (gtag.js) - Google Analytics