正确的 zip 压缩与解压代码

网上流传的zip压缩与解压 的代码有很大的问题 虽然使用了ant进行压缩与解压,但是任务的流程还是用的java.util.zip 的方式写的,我在使用的过程中遇到了压缩的目录结构有误,甚至出现不同解压软件显示的目录结构不同的窘境。

下面给出使用org.apache.tools.ant.taskdefs.Zip;和org.apache.tools.ant.taskdefs.Expand 的压缩和解压过程。

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";

	// 压缩
	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();
	}

	// 解压缩
	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();
	}

	public static void main(String []args){
		unzip("D:\\123.zip","D:\\123");
		zip("D:\\upload","D:\\upload.zip");
	}
}

正确的 zip 压缩与解压代码,布布扣,bubuko.com

时间: 2024-08-06 04:16:43

正确的 zip 压缩与解压代码的相关文章

java基础之zip(压缩、解压)

本程序依赖第三方包Ant.jar.因为java自带的java.utils.zip.ZipOutputStream对一些敏感中文路径会抛出异常. package javax.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Ou

文件操作工具类: 文件/目录的创建、删除、移动、复制、zip压缩与解压.

FileOperationUtils.java package com.xnl.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.Fi

golang zip 压缩,解压(含目录文件)

每天学习一点go src. 今天学习了zip包的简单使用,实现了含目录的压缩与解压. 写了两个方法,实现了压缩.解压. package ziptest import ( "archive/zip" "io" "os" "strings" ) //压缩文件 //files 文件数组,可以是不同dir下的文件或者文件夹 //dest 压缩文件存放地址 func Compress(files []*os.File, dest str

Zip 压缩、解压技术在 HTML5 浏览器中的应用

JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这时候只需要做一次请求,这样既减少了服务器的压力,同时也可以加快 web 应用的呈现速度. 今天就来探讨下 JSZip 如何与 HT 拓扑应用结合.先来看看这期 Demo 的效果图: 第一步.需要将应用对相关资源打包成 .zip 文件, 这是我要压缩的文件列表,把响应的资源文件存放到对应的文件夹下,然

【转】iOS开发之压缩与解压文件

ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单方法:从http://code.google.com/p/ziparchive/ 上下载ZipArchive.zip,解压后将代码加入工程中,并且把zlib库添加到工程中使用方法:1. 压缩:ZipArchive可以压缩多个文件,只需要把文件一一addFileToZip即可. ZipArchive* zip = [[ZipArchive alloc] init]; NS

iOS开发之压缩与解压文件

ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单 方法:从http://code.google.com/p/ziparchive/ 上下载ZipArchive.zip,解压后将代码加入工程中,并且把zlib库添加到工程中 使用方法: 1. 压缩:ZipArchive可以压缩多个文件,只需要把文件一一addFileToZip即可. ZipArchive* zip = [[ZipArchive alloc] init];

Java实现文件压缩与解压[zip格式,gzip格式]

Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还收录了一些能读写压缩格式流的类.要想提供压缩功能,只要把它们包在已有的I/O类的外面就行了.这些类不是Reader和Writer,而是Inpu

指令篇:文件与文件系统的压缩与解压与打包(归档)与解压___gzip、zcat;bzip2、bzcat;zip; tar

一.文件与文件系统的压缩: 1.单文件的四种压缩命令: ①.Compress (过时了,不做过多说明) ②.gzip,zcat  (gzip:压缩.zcat:查看) ③.bzip2,bzcat (bzip:压缩.bzcat:查看) ④.zip (zip:压缩.unzip:解压) 2.gzip,zcat 组合. 不保留源文件压缩:gzip file 保留源文件压缩:gzip -c file > file.gz 查看压缩比例并压缩文件:gzip -v file 查看压缩文件里面的内容:zcat fi

Linux 下zip包的压缩与解压

范例: zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo.zip abc.txt dir1 2.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip 3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们: # unzip abc\?.zip 注释:?表示一个字符,如果用*表示任意