`
yefei
  • 浏览: 123291 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java zip递归压缩解压代码

阅读更多

ZIP压缩类

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipCompress ...{

    
/** *//**
     * 
@param args
     
*/

    
public static void main(String[] args) throws IOException ...{
        compress(
"D:/tomcat-5.5.20","d:/test/testZip.zip");
    }

    
/** *//**
     * 递归压缩文件
     * 
@param source 源路径,可以是文件,也可以目录
     * 
@param destinct  目标路径,压缩文件名
     * 
@throws IOException
     
*/

    
private static void compress(String source,String destinct) throws IOException ...{
        List fileList
=loadFilename(new File(source));
        ZipOutputStream zos
=new ZipOutputStream(new FileOutputStream(new File(destinct)));
        
        
byte[] buffere=new byte[8192];
        
int length;
        BufferedInputStream bis;
        
        
for(int i=0;i<fileList.size();i++...{
            File file
=(File) fileList.get(i);
            zos.putNextEntry(
new ZipEntry(getEntryName(source,file)));
            bis
=new BufferedInputStream(new FileInputStream(file));
            
            
while(true...{
                length
=bis.read(buffere);
                
if(length==-1break;
                zos.write(buffere,
0,length);
            }

            bis.close();
            zos.closeEntry();
        }

        zos.close();
    }

    
/** *//**
     * 递归获得该文件下所有文件名(不包括目录名)
     * 
@param file
     * 
@return
     
*/

    
private static List loadFilename(File file) ...{
        List filenameList
=new ArrayList();
        
if(file.isFile()) ...{
            filenameList.add(file);
        }

        
if(file.isDirectory()) ...{
            
for(File f:file.listFiles()) ...{
                filenameList.addAll(loadFilename(f));
            }

        }

        
return filenameList;
    }

    
/** *//**
     * 获得zip entry 字符串
     * 
@param base
     * 
@param file
     * 
@return
     
*/

    
private static String getEntryName(String base,File file) ...{
        File baseFile
=new File(base);
        String filename
=file.getPath();
        
//int index=filename.lastIndexOf(baseFile.getName());
        if(baseFile.getParentFile().getParentFile()==null)
            
return filename.substring(baseFile.getParent().length());
        
return filename.substring(baseFile.getParent().length()+1);
    }

}

 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 java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class ZipDecompression ...{

    
/** *//**
     * 
@param args
     * 
@throws IOException 
     
*/

    
public static void main(String[] args) throws IOException ...{
        decompression(
"d:/test/testZip.zip","d:/test/un");
    }

    
/** *//**
     * 解压ZIP文件
     * 
@param zipFile  要解压的ZIP文件路径
     * 
@param destination  解压到哪里
     * 
@throws IOException
     
*/

    
public static void decompression(String zipFile,String destination) throws IOException ...{
        ZipFile zip
=new ZipFile(zipFile);
        Enumeration en
=zip.entries();
        ZipEntry entry
=null;
        
byte[] buffer=new byte[8192];
        
int length=-1;
        InputStream input
=null;
        BufferedOutputStream bos
=null;
        File file
=null;
        
        
while(en.hasMoreElements()) ...{
            entry
=(ZipEntry)en.nextElement();
            
if(entry.isDirectory()) ...{
                System.out.println(
"directory");
                
continue;
            }

            
            input
=zip.getInputStream(entry);
            file
=new File(destination,entry.getName());
            
if(!file.getParentFile().exists()) ...{
                file.getParentFile().mkdirs();
            }

            bos
=new BufferedOutputStream(new FileOutputStream(file));
            
            
while(true...{
                length
=input.read(buffer);
                
if(length==-1break;
                bos.write(buffer,
0,length);
            }

            bos.close();
            input.close();
        }

        zip.close();
    }

}
分享到:
评论
1 楼 adong12300 2018-05-23  
       ,找了好几个这种文件压缩的,就这个没啥问题

相关推荐

    使用java API实现zip递归压缩和解压文件夹

    主要介绍了使用java API实现zip递归压缩文件夹及解压,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    利用Java实现zip压缩解压缩

    关于Java实现文件的zip的解压缩 文本文档 虽然不多

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    压缩解压文件夹

    内部包含(递归压缩文件夹,对文件或文件目录进行压缩 ,解压缩zip包 , 压缩文件,)

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    Linux下的压缩解压缩命令详解及实例.docx

    zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    lstoc:go prog 以递归方式列出集合(tarzipetc)的内容,golang

    该程序将尽可能尝试解压/解压缩/解压/解压/解开任何东西。 虽然该程序不对这些档案的内容进行操作,但它为可以执行此操作的程序提供了基础。使用示例lstoc文件.tgz lstoc *.tgz *.zip find /cdrom -name *.zip | ...

    TarSeeker:tar 档案的递归搜索器。 它支持 bz2 和 gzip 压缩格式

    解压包含在 zip 存档中的文件夹 进入tarseeker文件夹 输入mvn package并等待进程结束 进入新创建的target文件夹 你会看到两个jar文件; “准备就绪”文件是没有-tmp后缀的文件 用法 典型用法: java -jar TarSeeker-...

    易语言程序免安装版下载

    “库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的对应命令名”请务必准确填写静态库中公开导出的符号...

Global site tag (gtag.js) - Google Analytics