`
chenpenghui
  • 浏览: 39125 次
  • 性别: Icon_minigender_1
  • 来自: 台州
社区版块
存档分类
最新评论

apache ant 解压缩zip

    博客分类:
  • JAVA
阅读更多

使用apache ant.tools.zip来打包和解压缩。


 package zip;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;

import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
/**
 * 
 * @author Administrator cph
 *
 */


public class ZipUtils {
	ZipFile zipFile = null;
	ZipEntry zipEntry = null;
	File temp = null;
	private OutputStream out = null;
	private BufferedOutputStream bos = null;
	private ZipOutputStream zos = null;
	/**
	 * 
	 * @param zipName   需要解压的文件
	 * @param zipPath	解压存储路径
	 * @throws Exception 
	 */
	public void unZip(String zipName,String zipPath) throws Exception{
		FileOutputStream fos;
		InputStream is;
		String path1 = "";
		String tempPath = "";
		if(!new File(zipPath).exists()){
		new File(zipPath).mkdir();
		}
		zipFile = new ZipFile(zipName);
		temp = new File(zipPath);
		String strPath = temp.getAbsolutePath();
		Enumeration<Object> enu = zipFile.getEntries();
		while(enu.hasMoreElements()){
			zipEntry = (ZipEntry) enu.nextElement();
			path1 = zipEntry.getName();
			if(zipEntry.isDirectory()){
				tempPath = strPath+File.separator+path1;
				File dir = new File(tempPath);
				dir.mkdirs();
				continue;
			}
			else{
				is = zipFile.getInputStream(zipEntry);
				BufferedInputStream bis = new BufferedInputStream(is);
				path1 = zipEntry.getName();
				tempPath = strPath+File.separator+path1;
			
				String subdirtemp = path1;
				for(int i=0;i<subdirtemp.length();i++){
					if(subdirtemp.substring(i, i+1).equalsIgnoreCase("\\")){
						String tempstr = strPath+File.separator+subdirtemp.substring(0,i);
						File subdir = new File(tempstr);
						if(!subdir.exists()){
							subdir.mkdir();
						}
					}
				}
				fos = new FileOutputStream(tempPath);
				BufferedOutputStream bos = new BufferedOutputStream(fos);
//				int c ;
//				while((c = bis.read())!=-1){
//					bos.write(c);
//				}
				
				IOUtils.copy(bis, bos);
				bis.close();
				bos.close();
			}
		}
	}
	public void close() throws IOException{
		this.zos.flush();
		this.zos.close();
		this.bos.flush();
		this.bos.close();
		this.out.flush();
		this.out.close();
	}
	
	
	/**
	 * 
	 * @param zipfileName	打包后文件的名称,含路径
	 * @param filePath		需要打包的文件夹或者文件的路径
	 * @param pathName		打包到pathName文件夹下
	 * @throws Exception
	 */
	
	public void doZip(String zipfileName,String filePath,String pathName) throws Exception{
			File f = new File(zipfileName);
			this.out = new FileOutputStream(f);
			this.bos = new BufferedOutputStream(out);
			this.zos = new ZipOutputStream(bos);
			this.zos.setEncoding("GBK");
			File file = new File(filePath);
			if (!"".equals(pathName) && null != pathName) {
				pathName = pathName + File.separator;
			} else {
				pathName = f.getName().substring(0, f.getName().length() - 4) + File.separator;
			}
			doZip(zos,filePath,pathName);
			close();
	}
	
	private void doZip(ZipOutputStream zos, String file, String pathName) throws IOException {
		File file2zip = new File(file);
		if (file2zip.isFile()) {
			zos.putNextEntry(new ZipEntry(pathName + file2zip.getName()));
			IOUtils.copy(new FileInputStream(file2zip.getAbsolutePath()), zos);
			zos.closeEntry();
		} else {
			File[] files = file2zip.listFiles();
			if (files.length < 1 || files == null) {
				return;
			} else {
				for (File f : files) {
					if (f.isDirectory()) {
						doZip(zos, f.getAbsolutePath(), pathName+f.getName()+File.separator);
					} else {
						zos.putNextEntry(new ZipEntry(pathName + f.getName()));
						IOUtils.copy(new FileInputStream(f.getAbsolutePath()), zos);
						zos.closeEntry();
					}
				}
			}
		}
	}

	public static void main(String[] args) throws Exception {
		ZipUtils tzp = new ZipUtils();
//		tzp.doZip("c:/aaab.zip", "d:/a/111.ppt", "");
		tzp.unZip("c:\\aaab.zip", "d:\\abc\\");
	}
}
 
分享到:
评论

相关推荐

    apache-ant-zip-2.3.jar.zip

    - `unzip`: 解压缩ZIP文件到指定的目录。 - `zip`: 创建新的ZIP文件,可以包含文件和目录。 - ` zipfileset`: 在Zip任务中定义文件集,可以包含过滤器来选择特定的文件。 - `updatezip`: 更新现有ZIP文件,添加或...

    利用ant.jar解压缩zip包

    总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...

    apache-ant-zip.jar

    Java自带的解压缩不支持中文路径,此开发包支持中文的解压缩

    apache-ant-1.6.5-bin.zip_ ant 1.6.5_ant_ant-1.6.5_apache ant win

    Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金...通过解压缩此ZIP文件并配置环境变量,用户可以利用Ant执行各种项目构建任务。详细的使用方法和特性可通过提供的readme.txt文件进行查阅。

    apache官方ant-1.10.11版本压缩包

    这通常意味着解压缩后,你会得到一个名为"apache-ant-1.10.11"的目录,里面包含了Ant的所有组件,如bin目录(包含可执行脚本如`ant`和`ant.bat`),lib目录(包含Ant运行所需的jar文件),以及其他的文档、许可证和...

    org.apache.tools.zip

    解压缩ZIP文件主要涉及`java.util.zip.ZipInputStream`和`org.apache.tools.zip.ZipEntry`。以下是一般过程: - 创建`ZipInputStream`对象,基于一个输入流(如FileInputStream),指向ZIP文件。 - 循环读取ZIP...

    apache ant进行zip解压缩操作示例分享

    在Apache Ant中,`Expand`任务用于解压缩ZIP、TAR或GZIP格式的文件。以下是一个使用Java API实现的自定义解压缩示例,虽然这不是直接使用Ant的XML配置,但可以作为理解Ant处理压缩文件原理的一个起点: ```java ...

    java解压缩zip代码与用到的jar包

    标题提到的"java解压缩zip代码与用到的jar包"主要涉及了Java对ZIP文件的操作,以及一个名为`ant.jar`的第三方库。`ant.jar`是Apache Ant的核心库,它是一个基于Java的任务执行工具,广泛用于构建项目,其中包含了...

    java zip 压缩 解压缩 附带ant.jar

    解压缩ZIP文件的过程则使用`ZipInputStream`: ```java import java.io.*; import java.util.zip.*; public class JavaUnzip { public static void main(String[] args) { try { File destinationDirectory = ...

    apache-ant安装包

    1. 解压缩"apache-ant-1.9.4-bin.zip"到你选择的目录。 2. 将解压后的目录添加到系统的PATH环境变量中,这样命令行就能识别"ant"命令。 3. 验证安装是否成功,通过命令行输入"ant -version",如果显示Apache Ant的...

    apache-ant-17.0.jar

    总的来说,Apache Ant 1.7.0.jar提供了解决Android ZIP解压中文乱码问题的功能,通过自定义解压字符编码,如设置为UTF-8,可以确保中文文件名在解压缩过程中的正确性。而`ZipEntry`是Java处理ZIP文件的核心类,虽然...

    apache压缩解压zip,支持中文

    3. **解压缩文件**:创建一个`ZipArchiveInputStream`,然后使用`getNextZipEntry`方法遍历并读取ZIP文件中的每一个条目,解压缩到目标目录。 4. **处理中文文件名**:Apache Commons Compress库自动处理Unicode...

    使用ant实现zip压缩和解压缩 一

    解压缩ZIP文件时,可以使用Ant的`&lt;unzip&gt;`任务。下面是如何使用`&lt;unzip&gt;`任务解压缩`output.zip`到指定目录: ```xml &lt;unzip src="output.zip" dest="dest"/&gt; ``` 这里,`src`属性指定了要解压缩的ZIP文件,而`...

    java 操作Zip文件(压缩、解压、加密).zip

    - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过XML格式的构建文件来定义任务,这使得整个过程可配置且易于自动化。 在实际应用中,如果你的项目依赖于这两个库,...

    apache的ZIP

    解压缩ZIP文件同样简单,只需要定义一个`unzip`任务。例如: ```xml &lt;unzip src="input.zip" dest="destinationFolder"/&gt; ``` 这会将`input.zip`解压缩到`destinationFolder`目录。 **高级用法:** Apache Ant...

    JAVA解压ZIP多层目录文件(需ant.jar

    这种方法利用了Apache Ant库中的`org.apache.tools.zip.ZipFile`类来实现解压功能。在实际应用中,这种方法非常实用,尤其是在需要处理复杂ZIP文件结构的情况下。 #### 方法参数 该方法接受三个参数: 1. **old...

    java_zip压缩与解压缩(不支持中文,ant.jar包的下支持)

    Ant使用了自己的实现来处理ZIP文件,其内部的`org.apache.tools.ant.types.ZipFileSet`和`org.apache.tools.ant.taskdefs.Zip`类在处理包含中文文件名的ZIP时表现得更为友好。Ant默认使用UTF-8编码,所以它能更好地...

    ant zip jar

    同时,Ant也提供了`&lt;unzip&gt;`任务,用于解压缩Zip文件,这对于处理依赖库或资源文件非常有用。 例如,如果你有一个包含Java源代码和相关资源的项目,你可以用Ant构建一个Jar文件,然后将它与依赖库一起打包到Zip文件...

    java 自动解压缩

    在这个场景中,我们提到的"java 自动解压缩"可能涉及到一个Java程序,它能够自动化地对ZIP或GZIP格式的压缩文件进行解压。此外,提到了`ant.jar`,这是Apache Ant工具的库,它是一个基于Java的任务执行框架,常用于...

Global site tag (gtag.js) - Google Analytics