`

java解压多目录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;
/**
 *  解压Zip文件工具类
 * @author zhangyongbo
 *
 */
public class ZipUtil {

	private static final int buffer = 2048;

	  public static void main(String[] args)
	    {
	        unZip("E:\\java\\Android\\aaa.zip");
	    }
	/**
     * 解压Zip文件
     * @param path 文件目录
     */
    public static void unZip(String path)
        {
    	 int count = -1;
         String savepath = "";

         File file = null;
         InputStream is = null;
         FileOutputStream fos = null;
         BufferedOutputStream bos = null;

         savepath = path.substring(0, path.lastIndexOf(".")) + File.separator; //保存解压文件目录
         new File(savepath).mkdir(); //创建保存目录
         ZipFile zipFile = null;
         try
         {
         	 zipFile = new ZipFile(path,"gbk"); //解决中文乱码问题
             Enumeration<?> entries = zipFile.getEntries();

             while(entries.hasMoreElements())
             {
                 byte buf[] = new byte[buffer];

                 ZipEntry entry = (ZipEntry)entries.nextElement();

                 String filename = entry.getName();
                 boolean ismkdir = false;
                 if(filename.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹
                 	ismkdir = true;
                 }
                 filename = savepath + filename;

                 if(entry.isDirectory()){ //如果是文件夹先创建
                 	file = new File(filename);
                 	file.mkdirs();
                 	 continue;
                 }
                 file = new File(filename);
                 if(!file.exists()){ //如果是目录先创建
                 	if(ismkdir){
                 	new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //目录先创建
                 	}
                 }
                 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);
                 }
                 bos.flush();
                 bos.close();
                 fos.close();

                 is.close();
             }

             zipFile.close();

         }catch(IOException ioe){
             ioe.printStackTrace();
         }finally{
            	try{
            	if(bos != null){
            		bos.close();
            	}
            	if(fos != null) {
            		fos.close();
            	}
            	if(is != null){
            		is.close();
            	}
            	if(zipFile != null){
            		zipFile.close();
            	}
            	}catch(Exception e) {
            		e.printStackTrace();
            	}
            }
        }
}

 

分享到:
评论

相关推荐

    java压缩zip文件解决中文乱码问题

    总结来说,处理Java中ZIP文件的中文乱码问题,关键在于明确指定字符集,通常是UTF-8,无论是使用Java内置的API还是第三方库。同时,理解文件系统的编码和压缩/解压过程中的字符编码转换也非常重要。通过这种方式,...

    java zip压缩解压工具解决中文乱码问题

    在Java编程中,处理压缩和解压缩ZIP文件是一项常见的任务,尤其当文件中包含中文字符时,可能会遇到中文乱码的问题。这是因为Java的标准库在处理非ASCII编码时可能存在不足。本篇文章将详细介绍如何使用Java标准库...

    java zip解压中文乱码问题

    网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.简单实用.下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\...

    解压zip压缩文件,支持多文件目录解压,中文乱码问题

    在使用Java对ZIP压缩文件进行解压的方式中有两种,一种是使用apache提供的ant.jar工具包,但是如果ZIP文件中含有中文名称的文件,在解压后,文件名将出现乱码,另一种是使用Java自身JDK中java.util.zip包下工具类,...

    java android zip解压缩(解决压缩中文乱码问题)

    本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...

    文件解压和压缩 解决中文乱码

    在IT行业中,文件的压缩和解压是一项...总的来说,理解和掌握文件压缩和解压的原理,以及处理中文乱码的方法,对Java开发者来说至关重要,这能够帮助他们有效地处理各种文件操作需求,尤其是涉及到多语言环境的时候。

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

    这就可能导致在Java中解压包含非ASCII字符(如中文)的ZIP文件时出现问题。 Java的`java.util.zip`包提供了对ZIP文件的支持,包括`ZipInputStream`和`ZipOutputStream`类用于读写ZIP文件,以及`ZipEntry`类来代表...

    org.apache.tools.zip解决解压乱码问题

    * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * void */ public static void unzip(String zipFilePath, String targetPath) throws ...

    Java中压缩与解压--中文文件名乱码解决办法

    在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名编码不一致,尤其是在Windows系统下,文件名通常采用GB2312或GBK编码,而Java中的`...

    ZipUtil文件压缩工具类(解决中文乱码)

    总之,`ZipUtil`文件压缩工具类通过结合`ZipEntry`和`ZipOutputStream`,提供了一种高效且健壮的解决方案,尤其适合处理包含中文字符的文件和目录,确保在压缩和解压过程中不会出现乱码问题。这对于需要在Java应用...

    基于Java向zip压缩包追加文件

    在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...

    JDK ZipEntry压缩中文文件名乱码解决

    项目中碰到问题.jdk zipEntry 压缩中文文件名乱码  上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项.  第二种 就是拿来主义,因为 开源项目 Ant 里已经有...

    JAVA解压ZIP文件(可解压中文)

    下面将详细介绍如何使用Java来解压ZIP文件,并解决中文文件名的解压问题。 首先,Java提供了一个内置的`java.util.zip`包,该包包含了处理ZIP文件所需的所有类,如`ZipInputStream`和`ZipEntry`。`ZipInputStream`...

    用java对文件进行压缩并且解决乱码问题

    下面我们将详细探讨如何使用`ZipOutputStream`进行文件压缩,并解决可能出现的乱码问题。 首先,让我们了解如何使用`ZipOutputStream`进行文件压缩的基本步骤: 1. 创建一个`FileInputStream`,用于读取要压缩的...

    读取zip文件,不解压缩直接解析,支持文件名中文,解决内容乱码(还是以支付宝对账单为例)

    本文将深入探讨如何在不解压的情况下直接读取ZIP文件,并特别关注如何处理包含中文文件名和内容乱码的问题。我们将以支付宝对账单为例,因为这类文件通常包含大量敏感和重要的财务信息,正确地读取和解析它们至关...

    java解压zip时中文名称解决方法

    本篇文章将详细探讨如何解决Java解压ZIP文件时遇到的中文名称问题。 首先,我们需要了解ZIP文件的编码标准。ZIP文件的标准编码是UTF-8,但并非所有创建ZIP文件的工具都遵循这个标准,有的可能使用GBK或其他编码。...

    Java压缩和解压缩zip文件

    本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....

    Java ZIP压缩一个或多个文件(解决中文名称乱码).rar

    用java.util.zipoutputstream压缩会出现中文的文件名乱码的情况,且无法设置字符集,这个版本用org.apache.tools.zip.ZipOutputStream压缩,可以自定义字符集,解决中文的文件名乱码问题。

    java 支持中文解压:一行代码解决 java.util.zip.ZipInputStream 中文乱码;--文件处理通用类

    1、文件解压zip通用机制方法、一行代码支持中文; 2、一行代码解决 java.util.zip.ZipInputStream 中文乱码; 3、删除指定路径内的所有文件通用机制方法;

    java压缩zip文件中文乱码问题解决方法

    总之,解决Java压缩ZIP文件中文乱码问题的关键在于使用支持设置编码的第三方库,并在处理中文内容和注释时明确指定正确的字符编码。这样,无论在何种编码环境中,都能确保中文字符正确无误地被压缩和解压。

Global site tag (gtag.js) - Google Analytics