• 使用 apache ant 轻松实现文件压缩/解压缩(转)


    原文地址:http://blog.csdn.net/irvine007/article/details/6779492

    maven配置ant包:

    <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>1.9.7</version>
    </dependency>

    java代码实现:

    import java.io.File;
    import org.apache.tools.ant.BuildException;
    import org.apache.tools.ant.Project;
    import org.apache.tools.ant.taskdefs.Expand;
    import org.apache.tools.ant.taskdefs.Zip;
    import org.apache.tools.ant.types.FileSet;
    
    /**
     * [压缩/解压缩]文件和文件夹
     */
    public class Zipper {
    
        public final static String encoding = "GBK";
    
        /**
         * 压缩文件和文件夹
         * 
         * @param srcPathname 需要被压缩的文件或文件夹路径
         * @param zipFilepath 将要生成的zip文件路径
         * @throws BuildException
         * @throws RuntimeException
         */
        public static void zip(String srcPathname, String zipFilepath) throws BuildException, RuntimeException {
            File file = new File(srcPathname);
            if (!file.exists()) {
                throw new RuntimeException("source file or directory " + srcPathname + " does not exist.");
            }
    
            Project proj = new Project();
            FileSet fileSet = new FileSet();
            fileSet.setProject(proj);
            // 判断是目录还是文件
            if (file.isDirectory()) {
                fileSet.setDir(file);
                // ant中include/exclude规则在此都可以使用
                // 比如:
                // fileSet.setExcludes("**/*.txt");
                // fileSet.setIncludes("**/*.xls");
            } else {
                fileSet.setFile(file);
            }
    
            Zip zip = new Zip();
            zip.setProject(proj);
            zip.setDestFile(new File(zipFilepath));
            zip.addFileset(fileSet);
            zip.setEncoding(encoding);
            zip.execute();
            
            System.out.println("compress successed.");
        }
    
        /**
         * 解压缩文件和文件夹
         * 
         * @param zipFilepath 需要被解压的zip文件路径
         * @param destDir 将要被解压到哪个文件夹
         * @throws BuildException
         * @throws RuntimeException
         */
        public static void unzip(String zipFilepath, String destDir) throws BuildException, RuntimeException {
            if (!new File(zipFilepath).exists()) {
                throw new RuntimeException("zip file " + zipFilepath + " does not exist.");
            }
    
            Project proj = new Project();
            Expand expand = new Expand();
            expand.setProject(proj);
            expand.setTaskType("unzip");
            expand.setTaskName("unzip");
            expand.setEncoding(encoding);
    
            expand.setSrc(new File(zipFilepath));
            expand.setDest(new File(destDir));
            expand.execute();
            
            System.out.println("uncompress successed.");
        }
    
    }
  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/zj0208/p/5977385.html
Copyright © 2020-2023  润新知