JAVA实现多文件压缩和解压缩

[使用java进行压缩和解压缩]

亲测可用:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class TestZIP {

	/**
	 * 功能:压缩多个文件成一个zip文件
	 * @param srcfile:源文件列表
	 * @param zipfile:压缩后的文件
	 */
	public static void zipFiles(File[] srcfile, File zipfile) {
		byte[] buf = new byte[1024];
		try {
			//ZipOutputStream类:完成文件或文件夹的压缩
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
			for (int i = 0; i < srcfile.length; i++) {
				FileInputStream in = new FileInputStream(srcfile[i]);
				out.putNextEntry(new ZipEntry(srcfile[i].getName()));
				int len;
				while ((len = in.read(buf)) > 0) {
					out.write(buf, 0, len);
				}
				out.closeEntry();
				in.close();
			}
			out.close();
			System.out.println("压缩完成.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 功能:解压缩
	 * @param zipfile:需要解压缩的文件
	 * @param descDir:解压后的目标目录
	 */
	public static void unZipFiles(File zipfile, String descDir) {
		try {
			ZipFile zf = new ZipFile(zipfile);
			for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
				ZipEntry entry = (ZipEntry) entries.nextElement();
				String zipEntryName = entry.getName();
				InputStream in = zf.getInputStream(entry);
				OutputStream out = new FileOutputStream(descDir + zipEntryName);
				byte[] buf1 = new byte[1024];
				int len;
				while ((len = in.read(buf1)) > 0) {
					out.write(buf1, 0, len);
				}
				in.close();
				out.close();
				System.out.println("解压缩完成.");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**功能:
	 * @param args
	 */
	public static void main(String[] args) {
		//2个源文件
		File f1 = new File("D:\\test\\1.csv");
		File f2 = new File("D:\\test\\2.xlsx");
		File[] srcfile = { f1, f2 };

		//压缩后的文件
		File zipfile = new File("D:\\test\\3.zip");
		TestZIP.zipFiles(srcfile, zipfile);

		//需要解压缩的文件
		File file = new File("D:\\test\\3.zip");
		//解压后的目标目录
		String dir = "D:\\test\\1\\";
		TestZIP.unZipFiles(file, dir);
	}
}
时间: 2024-12-06 23:32:58

JAVA实现多文件压缩和解压缩的相关文章

java架构 [Java 基础] 使用java.util.zip包压缩和解压缩文件

Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip"); ZipFile zipFile = new ZipFile(file); System.out.println("压缩文

[Java 基础] 使用java.util.zip包压缩和解压缩文件

reference :  http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile java中的每一个压缩文件都是可以使用ZipFile来进行表示的. File file = new File("F:/zippath.zip&quo

Java用ZIP格式压缩和解压缩文件

转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutputstream能够实现文件压缩,全部写入到zipoutputstream输入流中的数据,都会被ZIP格式压缩. 每一个被压缩的文件或者文件夹在zip文件里都相应一个zipentry对象,每一个zipentry都有一个name属性,表示它相对于zip文件文件夹的相对路径,对于文件夹,路径以“/“结尾,对

java压缩和解压缩Zip、Jar、Gzip文件

我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输.在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP.JAR.GZIP等形式,GZIP主要是在Linux系统下的压缩文件. 下面主要讲的就是ZIP形式的压缩文件,而JAR.GZIP形式的压缩文件也是类似的用法. ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util.zip这个包里面的类.主要有ZipFile. ZipOutputStream.ZipInput

Java对zip格式压缩和解压缩

Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件.gzip在压缩文件中的数据时使用的就是zlib.为了保存与文件属性有关的信息,gzip需要在压缩文件(*.gz)中保存更多的头信息内容,而zlib不用考虑这一点.但gzip只适用于单个文件,所以我们在UNIX/Linux上经常看到的压缩包后缀都是*.tar.gz或

使用commons-compress操作zip文件(压缩和解压缩)

http://www.cnblogs.com/luxh/archive/2012/06/28/2568758.html Apache Commons Compress是一个压缩.解压缩文件的类库. 可以操作ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200 and bzip2格式的文件,功能比较强大. 在这里写两个用Commons Compress把文件压缩成zip和从zip解压缩的方法. 直接贴上工具类代码: /** * Zip文件工具类 * @a

Huffman 压缩和解压缩java实现

附上完整的代码 http://download.csdn.net/download/u010485034/7847447 Huffman编码原理这里就不说了,是.这里来讲讲利用Huffman编码来进行压缩和解压缩的详细实现吧. 本project使用java实现. 编码 1. 流程图 2. 数据结构 CharacterWeight:记录字符值,以及其在待压缩文件里的权重. Class{ char c; //字符值 int weight; //在文件里权重 String code; //其相应huf

java工具类——java将一串数据按照gzip方式压缩和解压缩

我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio

关于文件查找和解压缩

文件查找和解压缩在文件系统上查找符合条件的文件,文件查找的工具有两个,locate 和 find文件查找分为:            locate      非实时查找 (在数据库查找)             updatedb   更新数据库            经常用于搜索稳定的文件,比如配置文件            var/lib/mlocate/mlocate.db 数据库路径             find     实时查找 locate :       查询系统上预建的文件索引