首页 新闻 会员 周边

使用ANT压缩文件夹,压缩文件中包含要压缩的文件夹怎么办

0
悬赏园豆:5 [已关闭问题] 关闭于 2014-02-09 11:16

压缩文件夹的代码如下:

package com.hnzskj.ao;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.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 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(fileOutputStream);
            
            String basedir = ""; 
            compress(file, out, basedir); 
            out.close(); 
        } catch (Exception e) { 
            throw new RuntimeException(e); 
        } 
    }

    private void compress(File file, ZipOutputStream out, String basedir) { 
        /* 判断是目录还是文件 */ 
        if (file.isDirectory()) { 
            System.out.println("压缩:" + basedir + file.getName()); 
            this.compressDirectory(file, out, basedir); 
        } else { 
            System.out.println("压缩:" + basedir + file.getName()); 
            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() + "/"); 
        } 
    }

    /** 压缩一个文件 */ 
    private 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) { 
            throw new RuntimeException(e); 
        } 
    } 
    
    public static void main(String[] args) { 
        ZipCompressor zc = new ZipCompressor("E:\\ZipCompressor.zip"); 
        zc.compress("E:\\Test"); 
        System.out.println("OK....");
    }
} 

 

 

压缩结果是:

我想要的结果:

泱泱的主页 泱泱 | 初学一级 | 园豆:2
提问于:2014-01-27 10:48
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册