件_文_缩_压

/*******************************************************************************
* Copyright(c) 2005-2009 Huawei Tech. Co., Ltd.
* All rights reserved.
*
* Author: xbliuc
* Date  : 2011-3-22
*******************************************************************************/
package treeviewer;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
* 压缩文件  -- 暂不支持目录中含有中文
* 解压文件 -- 必须使用apache的ant.jar包
*/
public class Zip
{
   
    /**
     * 压缩文件
     * @param args
     * @throws IOException
     * @throws IOException
     */
    @SuppressWarnings("all")
    public static void main(String[] args) throws IOException
    {
        getYSZip();//压缩文件
    }
   
    /**
     * 压缩文件调用方法
     * @throws IOException
     */
    @SuppressWarnings("all")
    public static void getYSZip() throws IOException
    {
        String zipName = "F:\\a.zip";//压缩后的文件名
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipName));//压缩后的文件
        File file = new File("F:\\FileTest");//需要压缩的路径或文件
        ysZip(zos, file, "");
        zos.close();
        System.out.println("压缩完成");
    }
   
    /**
     * 压缩文件--工具方法
     * @throws IOException
     */
    @SuppressWarnings("all")
    public static void ysZip(ZipOutputStream zos, File file, String base)
            throws IOException
    {
        if (file.isDirectory()) //判断当前File对象是否是路径
        {
            File[] files = file.listFiles();//获取该路径下的所有内容
            zos.putNextEntry(new ZipEntry(base + "/"));
            base = base.length() == 0 ? "" : base + "/";//判断参数是否为空
            for (File childFile : files)
            {
                ysZip(zos, childFile, base + childFile);//递归路径下的所有文件
            }
        }
        else
        {
            zos.putNextEntry(new ZipEntry(base));//创建新的进入点
            InputStream is = new FileInputStream(file);
            int b;
            System.out.println("a " + base);
            while ((b = is.read()) != -1)
            {
                zos.write(b);//将字节写入Zip条目
            }
            is.close();
        }
    }
}

你可能感兴趣的:(java,apache,c,ant,F#)