• 压缩文件或文件夹


    package org.shfft.fq.data.util;

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.CRC32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;

    public class ZipCompressor {

    static final int BUFFER = 8192;
    private File zipFile;

    public ZipCompressor(String pathName) {

    zipFile = new File(pathName);
    }

    public void compress(String... pathName) {

    ZipOutputStream out = null;
    try {
    FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
    CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());
    out = new ZipOutputStream(cos);
    String basedir = "";
    for(int i=0;i<pathName.length;i++){
    compress(new File(pathName[i]),out,basedir);
    }
    out.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public void compress(String srcPathName) {
    File file = new File(srcPathName);
    if(!file.exists()){
    throw new RuntimeException(srcPathName + "不存在!");
    }
    try {
    FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
    CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());
    ZipOutputStream out = new ZipOutputStream(cos);
    String basedir = "";
    compress(file, out, basedir);
    out.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private void compress(File file,ZipOutputStream out,String basedir) {
    //判断是文件还是目录
    if(file.isDirectory()){
    this.compressDirectory(file, out, basedir);
    }else{
    this.compressFile(file, out, basedir);
    }
    }

    /*
    * 压缩一个目录
    */
    private void compressDirectory(File dir,ZipOutputStream out,String basedir) {

    if(!dir.exists()){
    return;
    }
    File[] files = dir.listFiles();
    for(int i=0;i<files.length;i++){
    compress(files[i],out,basedir + dir.getName() + "/");
    }
    }

    /*
    * 压缩一个文件
    */
    public void compressFile(File file,ZipOutputStream out,String basedir) {

    if(!file.exists()){
    return ;
    }
    try {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
    ZipEntry entry = new ZipEntry(basedir + file.getName());
    out.putNextEntry(entry);
    int count;
    byte data[] = new byte[BUFFER];
    while((count = bis.read(data, 0, BUFFER)) != -1){
    out.write(data, 0, count);
    }
    bis.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    ZipCompressor zipCompressor = new ZipCompressor("W:\junit.zip");
    zipCompressor.compress("W:\junit");
    }

    }

  • 相关阅读:
    无根树转有根树
    HDU(1853),最小权匹配,KM
    一位10年Java工作经验的架构师聊Java和工作经验
    一位资深程序员大牛给予Java初学者的学习路线建议
    Java基础部分全套教程.
    假如时光倒流,我会这么学习Java
    一位10年Java工作经验的架构师聊Java和工作经验
    一位资深程序员大牛给予Java初学者的学习路线建议
    Java基础部分全套教程.
    成为一名JAVA高级工程师你需要学什么
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/6121642.html
Copyright © 2020-2023  润新知