2008-06-16

使用java zip 压缩文件目录

关键字: java
@Test
    public void testPackageContent() {
        try {
            FileOutputStream f = 
                new FileOutputStream(BASE_PATH + "/../" + packageName + ".zip");
            CheckedOutputStream csum = 
                new CheckedOutputStream(f, new Adler32());//Adler32 is faster than CRC32
            ZipOutputStream out = 
                new ZipOutputStream(new BufferedOutputStream(csum));
            out.setComment("some comments");
            File srcDir = new File(BASE_PATH);
            zipFile(out, srcDir, "packageName");
            out.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * zip the given file
     * @param out - ZipOutputStream
     * @param srcDir - if it is a file then add this file into zip, if it is dir, then call zipFile cascade
     * @param filePath - the filepath in zipfile
     * @throws IOException
     */
    private void zipFile(ZipOutputStream out, File srcDir, String filePath) throws IOException{
        for(File file : srcDir.listFiles()){
            if(file.isDirectory()){
                zipFile(out, file, filePath+"/"+file.getName());
                continue;
            }
            Logger.global.info("Writing file : "+file.getName());
            FileInputStream in = new FileInputStream(file);
            out.putNextEntry(new ZipEntry(filePath+"/"+file.getName()));
            byte[] b = new byte[1024];
            int off = 0;
            while((in.read(b,off,1024)) != -1){
                out.write(b);
            }
            in.close();
        }
    }
评论
发表评论

您还没有登录,请登录后发表评论

Ivan Li
搜索本博客
最近加入圈子
存档
最新评论