欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用ant解压缩包、打压缩包 博客分类: Java ant解压缩打压缩包 

程序员文章站 2024-03-24 21:17:40
...

需要用到的jar包:

 ant.jar

 

1、解压缩包:

/**
 * 解压指定zip文件 
 * @param unZipfile:需要解压缩的压缩包路径(路径+名称+.+后缀名)
 * @param destFile:解压到的目录
 * */
public void UNCompress(File unZipfile, File destFile) {
	FileOutputStream fileOut;
    File file;
    InputStream inputStream;
    ZipFile zipFile=null;
    ZipOutputStream zipOut=null;     //压缩Zip
    try {
        //生成一个zip的文件
        zipFile = new ZipFile(unZipfile,"GBK");//设置编码,避免出现中文的情况(不管是压缩文件为中文,还是压缩包中的文件为中文)
        //遍历zipFile中所有的实体,并把他们解压出来
        for (@SuppressWarnings("unchecked")
        Enumeration<ZipEntry> entries = zipFile.getEntries(); entries.hasMoreElements();) {
            ZipEntry entry =  entries.nextElement();
            //生成他们解压后的一个文件  
            file = new File(destFile+File.separator+entry.getName());
            if (entry.isDirectory()) {
                file.mkdirs();
            } else {
                File parent = file.getParentFile();// 如果指定文件的目录不存在,就创建.
                if (!parent.exists()) {
                    parent.mkdirs();
                }  
                //获取出该压缩实体的输入流 
                    inputStream = zipFile.getInputStream(entry);
  
                    fileOut = new FileOutputStream(file);
                    int length = 0;
                    //将实体写到本地文件中去
                while ((length = inputStream.read(buf)) > 0) {
                    fileOut.write(buf, 0, length);
                }
                fileOut.close();
                inputStream.close();
            }
        }
        zipFile.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

 

2、打压缩包:

/**
 * 打压缩包
 * @param classFileList:需要打成压缩包的文件夹路径
 * */
public void compress(List<File> classFileList) {  
	String srcPathName=null;//需要打成压缩包的文件夹路径
	File zipFile=null;//压缩包名称(路径+名称+.+后缀名)
	File srcdir=null;
	Project prj=null;
	Zip zip = null;
	if(classFileList!=null && classFileList.size()>0){
		for(File f:classFileList){
			//System.out.println(f.getAbsolutePath()+"\n"+f.getName());
			srcPathName = f.getAbsolutePath();
			//System.out.println(f.getAbsolutePath()+File.separator+f.getName()+".zip");
			zipFile = new File(f.getAbsolutePath()+".zip") ;
			
			srcdir= new File(srcPathName);  
	        if (!srcdir.exists()){  
	            throw new RuntimeException(srcPathName + "不存在!");  
	        }
	        if(zipFile.exists()){//说明当前目录下存在同名压缩文件
	        	zipFile.delete();
	        }
	        prj = new Project();  
	        zip = new Zip();  
	        zip.setEncoding("GBK");//设置编码,防止压缩文件名字乱码,还有被压缩文件的乱码
	        zip.setProject(prj);  
	        zip.setDestFile(zipFile);  
	        FileSet fileSet = new FileSet();  
	        fileSet.setProject(prj);  
	        fileSet.setDir(srcdir);  
	        zip.addFileset(fileSet);  
	        zip.execute();  //执行生成
		}
	}
}