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实现这一功能,主要关注两种常用的压缩格式:ZIP和GZ。 首先,我们要引入Java的内置库`java.util.zip`,它提供了处理ZIP和GZIP格式的类。对于ZIP格式,我们主要使用`ZipOutputStream`来...
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
在Java中实现哈夫曼压缩和解压涉及到以下几个关键知识点: 1. **哈夫曼树**: 哈夫曼树(Huffman Tree)是一种带权路径长度最短的二叉树,也称为最优二叉树。它通过将频率较低的字符编码为较短的位序列,而频率较...
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`。 首先,我们来了解一下ZIP文件格式。ZIP是一种用于存储多个文件到一个单一...
在Java编程环境中,我们可以利用LZW算法实现文件的压缩和解压缩功能。以下是对LZW算法及其Java实现的详细解释: 1. **LZW算法原理**: LZW算法基于词典编码思想,它通过查找或构建一个动态更新的词典来压缩数据。...
在Java中实现Huffman编码,需要理解其基本原理并运用数据结构和算法。 一、Huffman编码原理 1. 频率统计:首先,对输入文本中的每个字符出现的次数进行统计,得到一个字符频率表。 2. 构建Huffman树:通过一个...
本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...
java中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。
java 文件zip 压缩与解压 可以直接调用
通过理解和实现LZ78算法,不仅可以学习到数据压缩的基本原理,还能深入理解字符串处理、字典数据结构和位操作等编程技巧。在实际应用中,LZ78算法常被用作其他更高效压缩算法的基础,例如LZW(Lempel-Ziv-Welch)...
在Java编程语言中,实现文件的压缩和解压是常见的任务,这有助于数据存储和传输。本示例将深入探讨如何使用Java的内置库来处理ZIP格式的压缩和解压缩。`java.util.zip`包提供了必要的类来实现这一功能。 首先,让...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
java解压zlib和压缩zlib的jar
Java编写的Huffman实现的文本压缩和解压。可以压缩小于2MB的,大了也可以只是时间很长。解压缩实现的不好只能解压小于100KB的。欢迎大家下载。还有只能对文本文件进行操作。由于huffman所发本身就有问题所以如果压缩...