`

java 实现压缩和解压

阅读更多
package com.yss.test.FileReadWriter;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipFile;

public class ZipFileT {
	static final int BUFFER = 2048;
	// 压缩后的文件
	private static final String ZIP_FILE_AFTER = "f:\\testdata\\11.zip";
	// 要压缩的文件
	private static final String ZIP_FILE_BEFORE = "F:\\testdata\\";

	public static void main(String[] args) {
		//zip_file();
		un_zip_file();
	}

	/**
	 * 压缩文件
	 */
	public static boolean zip_file() {
		try {
			BufferedInputStream bis = null;

			ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
					new FileOutputStream(ZIP_FILE_AFTER)));

			byte data[] = new byte[BUFFER];

			File f = new File(ZIP_FILE_BEFORE);
			File files[] = f.listFiles();// 列出所有的文件
			for (int i = 0; i < files.length; i++) {
				FileInputStream fi = new FileInputStream(files[i]);
				bis = new BufferedInputStream(fi, BUFFER);
				ZipEntry entry = new ZipEntry(files[i].getName());
				out.putNextEntry(entry);
				int count;
				while ((count = bis.read(data, 0, BUFFER)) != -1) {
					out.write(data, 0, count);
				}
				bis.close();
			}
			out.close();
		} catch (Exception e) {
			System.out.println(e.getMessage());
			return false;
		}
		return true;
	}

	/**
	 * 解压缩文件
	 */
	public static boolean un_zip_file() {
		try {
			ZipFile zipFile = new ZipFile(ZIP_FILE_AFTER);
			Enumeration emu = zipFile.entries();
			int i = 0;
			while (emu.hasMoreElements()) {
				ZipEntry entry = (ZipEntry) emu.nextElement();
				
				// 会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。
				if (entry.isDirectory()) {
					new File(ZIP_FILE_BEFORE + entry.getName()).mkdirs();
					continue;
				}
			
				BufferedInputStream bis = new BufferedInputStream(zipFile
						.getInputStream(entry));
				File file = new File(ZIP_FILE_BEFORE + entry.getName());
				
				// 加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件
				// 而这个文件所在的目录还没有出现过,所以要建出目录来。
				File parent = file.getParentFile();
				if (parent != null && (!parent.exists())) {
					parent.mkdirs();
				}
				FileOutputStream fos = new FileOutputStream(file);
				BufferedOutputStream bos = new BufferedOutputStream(fos, BUFFER);
				int count;
				byte data[] = new byte[BUFFER];
				
				while ((count = bis.read(data, 0, BUFFER)) != -1) {
					bos.write(data, 0, count);
				}
				bos.flush();
				bos.close();
				bis.close();
			}
			zipFile.close();
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
}

分享到:
评论

相关推荐

    java实现压缩和解压.doc

    本文将深入探讨如何使用Java实现这一功能,主要关注两种常用的压缩格式:ZIP和GZ。 首先,我们要引入Java的内置库`java.util.zip`,它提供了处理ZIP和GZIP格式的类。对于ZIP格式,我们主要使用`ZipOutputStream`来...

    实现java文件压缩与解压

    ### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...

    Java实现的带密码压缩与解压zip文件源码

    在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。

    Java实现Zip的压缩和解压

    NULL 博文链接:https://zhenyong.iteye.com/blog/1576148

    java哈夫曼压缩和解压

    在Java中实现哈夫曼压缩和解压涉及到以下几个关键知识点: 1. **哈夫曼树**: 哈夫曼树(Huffman Tree)是一种带权路径长度最短的二叉树,也称为最优二叉树。它通过将频率较低的字符编码为较短的位序列,而频率较...

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`。 首先,我们来了解一下ZIP文件格式。ZIP是一种用于存储多个文件到一个单一...

    LZW实现Java压缩解压

    在Java编程环境中,我们可以利用LZW算法实现文件的压缩和解压缩功能。以下是对LZW算法及其Java实现的详细解释: 1. **LZW算法原理**: LZW算法基于词典编码思想,它通过查找或构建一个动态更新的词典来压缩数据。...

    Huffman压缩解压java实现

    在Java中实现Huffman编码,需要理解其基本原理并运用数据结构和算法。 一、Huffman编码原理 1. 频率统计:首先,对输入文本中的每个字符出现的次数进行统计,得到一个字符频率表。 2. 构建Huffman树:通过一个...

    java解压和压缩tar包

    本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...

    java文件压缩和解压 源码

    java中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

    LZ78算法实现对任意字符串的压缩与解压

    通过理解和实现LZ78算法,不仅可以学习到数据压缩的基本原理,还能深入理解字符串处理、字典数据结构和位操作等编程技巧。在实际应用中,LZ78算法常被用作其他更高效压缩算法的基础,例如LZW(Lempel-Ziv-Welch)...

    java 实现文件的压缩与解压

    在Java编程语言中,实现文件的压缩和解压是常见的任务,这有助于数据存储和传输。本示例将深入探讨如何使用Java的内置库来处理ZIP格式的压缩和解压缩。`java.util.zip`包提供了必要的类来实现这一功能。 首先,让...

    Java压缩及解压tar、tar.z格式文件

    Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    java解压zlib和压缩zlib的jar

    java解压zlib和压缩zlib的jar

    Java编写的Huffman实现的文本压缩和解压

    Java编写的Huffman实现的文本压缩和解压。可以压缩小于2MB的,大了也可以只是时间很长。解压缩实现的不好只能解压小于100KB的。欢迎大家下载。还有只能对文本文件进行操作。由于huffman所发本身就有问题所以如果压缩...

Global site tag (gtag.js) - Google Analytics