`

Java_ziputil

    博客分类:
  • Java
 
阅读更多

/** 

    * 压缩文件-由于out要在递归调用外,所以封装一个方法用来 

     * 调用ZipFiles(ZipOutputStream out,String path,File... srcFiles) 

     * @param zip 

     * @param path 

     * @param srcFiles 

     * @throws IOException 

     * @author isea533 

     */  

    public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{  

        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));  

        ZipTest.ZipFiles(out,path,srcFiles);  

        out.close();  

        System.out.println("*****************压缩完毕*******************");  

    }  

    /** 

     * 压缩文件-File 

     * @param zipFile  zip文件 

     * @param srcFiles 被压缩源文件 

     * @author isea533 

     */  

    public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){  

        path = path.replaceAll("\\*", "/");  

        if(!path.endsWith("/")){  

            path+="/";  

        }  

        byte[] buf = new byte[1024];  

        try {  

            for(int i=0;i<srcFiles.length;i++){  

                if(srcFiles[i].isDirectory()){  

                    File[] files = srcFiles[i].listFiles();  

                    String srcPath = srcFiles[i].getName();  

                    srcPath = srcPath.replaceAll("\\*", "/");  

                    if(!srcPath.endsWith("/")){  

                        srcPath+="/";  

                    }  

                    out.putNextEntry(new ZipEntry(path+srcPath));  

                    ZipFiles(out,path+srcPath,files);  

                }  

                else{  

                    FileInputStream in = new FileInputStream(srcFiles[i]);  

                    System.out.println(path + srcFiles[i].getName());  

                    out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));  

                    int len;  

                    while((len=in.read(buf))>0){  

                        out.write(buf,0,len);  

                    }  

                    out.closeEntry();  

                    in.close();  

                }  

            }  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

 

 

/** 

     * 解压到指定目录 

     * @param zipPath 

     * @param descDir 

     * @author isea533 

     */  

    public static void unZipFiles(String zipPath,String descDir)throws IOException{  

        unZipFiles(new File(zipPath), descDir);  

    }  

    /** 

     * 解压文件到指定目录 

     * @param zipFile 

     * @param descDir 

     * @author isea533 

     */  

    @SuppressWarnings("rawtypes")  

    public static void unZipFiles(File zipFile,String descDir)throws IOException{  

        File pathFile = new File(descDir);  

        if(!pathFile.exists()){  

            pathFile.mkdirs();  

        }  

        ZipFile zip = new ZipFile(zipFile);  

        for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){  

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

            String zipEntryName = entry.getName();  

            InputStream in = zip.getInputStream(entry);  

            String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;  

            //判断路径是否存在,不存在则创建文件路径   

            File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));  

            if(!file.exists()){  

                file.mkdirs();  

            }  

            //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压   

            if(new File(outPath).isDirectory()){  

                continue;  

            }  

            //输出文件路径信息   

            System.out.println(outPath);  

              

            OutputStream out = new FileOutputStream(outPath);  

            byte[] buf1 = new byte[1024];  

            int len;  

            while((len=in.read(buf1))>0){  

                out.write(buf1,0,len);  

            }  

            in.close();  

            out.close();  

            }  

        System.out.println("******************解压完毕********************");  

    }  

/**

* 解压到指定目录

* @param zipPath

* @param descDir

* @author isea533

*/

public static void unZipFiles(String zipPath,String descDir)throws IOException{

unZipFiles(new File(zipPath), descDir);

}

/**

* 解压文件到指定目录

* @param zipFile

* @param descDir

* @author isea533

*/

@SuppressWarnings("rawtypes")

public static void unZipFiles(File zipFile,String descDir)throws IOException{

File pathFile = new File(descDir);

if(!pathFile.exists()){

pathFile.mkdirs();

}

ZipFile zip = new ZipFile(zipFile);

for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){

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

String zipEntryName = entry.getName();

InputStream in = zip.getInputStream(entry);

String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;

//判断路径是否存在,不存在则创建文件路径

File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));

if(!file.exists()){

file.mkdirs();

}

//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压

if(new File(outPath).isDirectory()){

continue;

}

//输出文件路径信息

System.out.println(outPath);

 

OutputStream out = new FileOutputStream(outPath);

byte[] buf1 = new byte[1024];

int len;

while((len=in.read(buf1))>0){

out.write(buf1,0,len);

}

in.close();

out.close();

}

System.out.println("******************解压完毕********************");

}

解压的时候,针对文件夹判断创建不存在的文件夹,对文件夹只创建,不进行解压..因为解压是针对文件的,不是文件夹,文件夹需要自己创建。 

 

 

测试方法:

 

 

[java] view plaincopyprint?

public static void main(String[] args) throws IOException {  

        /** 

         * 压缩文件 

         */  

        File[] files = new File[]{new File("d:/English"),new File("d:/发放数据.xls"),new File("d:/中文名称.xls")};  

        File zip = new File("d:/压缩.zip");  

        ZipFiles(zip,"abc",files);  

          

        /** 

         * 解压文件 

         */  

        File zipFile = new File("d:/压缩.zip");  

        String path = "d:/zipfile/";  

        unZipFiles(zipFile, path);  

    }  

 

分享到:
评论

相关推荐

    ZipUtil文件压缩工具类

    在Java编程语言中,`ZipUtil`文件压缩工具类是一个非常实用的工具,它利用了Java内置的`java.util.zip`包中的`ZipEntry`类来实现文件或目录的压缩功能。`ZipUtil`通常被设计为一个静态类,提供一系列静态方法,使得...

    java 打包文件(文件夹)为 zip压缩包 java 压缩文件

    在Java编程环境中,打包...总的来说,Java提供了丰富的API来处理文件压缩,`ZIPUtil`可能是封装了这些API的实用工具,方便开发者进行文件和文件夹的打包工作。在实际应用中,可以结合具体需求进行相应的定制和优化。

    ZipUtil.java

    Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,Android 加解压工具类,

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

    在Java编程语言中,处理文件压缩任务是一项常见的需求。`ZipUtil`是一个专门用于文件压缩的工具类,它解决了在处理包含中文字符的文件或目录时可能出现的乱码问题。`ZipEntry`是Java标准库`java.util.zip`包中的核心...

    Java压缩文件工具类ZipUtil使用方法代码示例

    Java压缩文件工具类ZipUtil使用方法代码示例 Java压缩文件工具类ZipUtil是一个功能强大且实用的压缩文件工具类,通过使用Java的Zip输入输出流实现压缩和解压文件。下面是对ZipUtil类的详细介绍和使用方法代码示例。...

    java 文件zip解压缩,单个文件以及多个文件

    java 文件zip解压缩,单个文件以及多个文件,有需要的请下载。

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

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

    Java中各种工具类代码,.java文件以及使用说明

    包含各种工具类文件如ChangePinYin.java、CollectionUtil.java、DateUtil.java、DBConnectionUtil.java、FileUtil.java、FtpUtil.java、...java、MathUtil.java、MD5Util.java、StringUtil.java、ZipUtil.java...

    ZIPUtil.java

    java解压以及压缩zip,可运行程序!

    ZipUtil.rar

    `ZipUtil.rar`这个文件很可能包含了一个Java库,用于处理ZIP压缩格式的文件操作,如遍历、解压和压缩。这里我们将深入探讨与Java、ZIP格式以及文件夹操作相关的知识点。 1. **Java I/O流**:Java提供了丰富的I/O流...

    ZipUtil加密解密压缩工具

    加密压缩 解密解压 java编写 不需jdk环境 exe双击即可运行

    java常用工具类集合.zip

    我自己一直使用的辅助类,压缩包的内容如下:Base64Util.java。DateUtil.java。ExportExcelUtilT.java。FileUtils.java。GPSUtil.java。ImageBase64Utils.java。ImageGenerationUtil.java。...ZipUtil.java

    java zip解压中文乱码问题

    下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\...

    Java常用工具包Jodd.zip

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!Jodd = Tools IoC MVC DB AOP TX JSON HTML &lt; 1.5 MbJodd 被分成众多模块,按需选择,其中工具类模块有:jodd-core 一些工具类...

    zipUtil.java

    此工具类利用freemarker模板生成单个word文档到浏览器,同时支持多个word文档打包压缩后下载到浏览器,

Global site tag (gtag.js) - Google Analytics