/**
* 压缩文件或目录<br/>
* 将文件或者目录压缩为zip格式的压缩文件
*
* @param commpressedFile 压缩后的文件
* @param preCommpressFile 需要压缩的文件或目录路径
* @return true | false
*/
public static boolean compress(String commpressedFile, String preCommpressFile)
{
boolean isSucc = true;
File inputFile = new File(preCommpressFile);
ZipOutputStream out;
try
{
out = new ZipOutputStream(new FileOutputStream(commpressedFile));
log.debug("begin to compress file... ...");
compress(out, inputFile, inputFile.getName(), progess);
log.debug("compressed successful");
out.close();
}
catch (Exception e)
{
isSucc = false;
log.error(e.toString(), e);
}
return isSucc;
}
/**
* 递归压缩文件夹下的所有文件
*
* @param out 输出流
* @param file 需要压缩的文件
* @param base 压缩后文件的父目录
* @throws IOException
*/
private static void compress(ZipOutputStream out, File file, String base)
throws IOException
{
log.debug("compressing: " + file.getName() + "... ...");
if (file.isDirectory())
{
File[] fs = file.listFiles();
base += "/";
log.debug("add folder: " + file.getName());
out.putNextEntry(new ZipEntry(base)); // 生成相应的目录
for (int i = 0; i < fs.length; i++)
{
// 对本目录下的所有文件对象递归遍历,逐个压缩
compress(out, fs[i], base + fs[i].getName(), progess);
}
}
else
{
log.debug("add file: " + file.getName());
out.putNextEntry(new ZipEntry(base));
InputStream is = new FileInputStream(file);
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1)
{
out.write(buf, 0, len);
}
is.close();
}
}
/**
* 解压缩文件<br/>
* 解压缩zip格式的文件
*
* @param zipFile 需要解压缩的文件
* @param desPath 解压后保存的目录
*/
public static void decompress(String zipFile, String desPath)
{
// 建立输出流,用于将从压缩文件中读出的文件流写入到磁盘
OutputStream out = null;
// 建立输入流,用于从压缩文件中读出文件
ZipInputStream is;
File dir = new File(desPath);
dir.mkdirs();
try
{
is = new ZipInputStream(new FileInputStream(zipFile));
ZipEntry entry = null;
while ((entry = is.getNextEntry()) != null)
{
log.debug("decompressing :" + entry.getName() + "... ...");
File f = new File(dir, entry.getName());
if (entry.isDirectory())
{
log.debug("add filder :" + f.getName());
f.mkdir();
}
else
{
log.debug("add file :" + f.getName());
// 根据压缩文件中读出的文件名称新建文件
out = new FileOutputStream(f);
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1)
{
out.write(buf, 0, len);
}
out.close();
}
}
is.close();
}
catch (Exception e)
{
log.error(e.toString(), e);
}
}
分享到:
相关推荐
本篇文章将详细介绍如何在VC中利用解压缩库来处理Java中gzip压缩的数据。 gzip是一种广泛使用的数据压缩格式,主要应用于网络传输,它基于DEFLATE算法,可以有效地减小文件大小,从而提高传输效率。Java中提供了...
4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...
一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...
在本文中,我们将深入探讨如何使用Java实现GZIP压缩和解压缩文件的源码。 首先,我们需要引入Java的`java.util.zip`包,这个包包含了处理GZIP和其他压缩格式所需的类。在Java中,`GZIPOutputStream`和`...
在提供的压缩包中,包含了一个名为`webserviceTest.html`的文件,这可能是一个演示如何在实际Web服务中使用pako进行gzip压缩和解压缩的示例。此外,`js`文件夹可能包含了pako库和其他相关的JavaScript代码。通过查看...
本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩与解压缩操作。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了对ZIP和GZIP格式的支持。在GZIP操作中,我们主要会用到`GZIPOutputStream`和`...
总的来说,Java提供的GZIP压缩功能是强大且易用的,`GZipUtils`类的实现可以帮助我们更便捷地在项目中使用这些功能。而`GZipUtilsTest`则确保了这些功能的正确性,使得我们在实际应用中可以更加放心。
ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。
本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩和解压缩操作。 首先,我们要导入相关的Java.IO和Java.util.zip库,它们提供了对GZIP文件格式的支持: ```java import java.io.*; import java.util.zip.*; ...
首先,我们要了解Java中的`java.util.zip.GZIPOutputStream`和`java.util.zip.GZIPInputStream`类,这两个类是Java标准库提供的用于GZIP压缩和解压缩的核心工具。`GZIPOutputStream`用于写入压缩数据,而`...
这个压缩包"基于java的用GZIP压缩解压文件.zip"包含了一个或多个示例,展示了如何在Java环境中利用GZIP进行文件操作。以下是关于Java中GZIP压缩和解压缩文件的相关知识点: 1. **GZIPOutputStream**:这是Java标准...
本资源包“文件GZip压缩AES加密反向解密解压缩代码和jar”提供了完整的Java实现,使得开发者能够方便地对文件进行GZip压缩、AES加密,以及后续的解密和解压缩操作。下面将详细解释这些技术及其应用。 首先,GZip...
在本文中,我们将深入探讨Java中的GZIP压缩技术,并结合HTTPWatch监测工具,理解其在实际网络请求中的应用。GZIP是一种广泛使用的数据压缩格式,它可以在网络传输中有效地减小文件大小,从而提高加载速度,减少...
Lzo压缩速度快,但解压缩速度较慢,通常在需要快速写入数据而不太关心读取性能的场景下使用。 压缩算法的选择取决于具体的应用需求,如压缩效率、解压速度以及对压缩比的需求。在实际应用中,可能还需要考虑其他...
Java 实现压缩与解压缩是Java编程中常见的一项任务,主要涉及到I/O流处理和压缩库的使用。本文将深入探讨如何使用Java进行文件的压缩和解压缩操作,以及涉及的相关知识点。 首先,Java标准库提供了`java.util.zip`...
使用易语言的GZIP解压缩源码,我们可以将接收到的GZIP数据还原成原始内容。 在易语言中,解压缩GZIP文件通常涉及以下几个步骤: 1. 打开GZIP文件:使用易语言的文件操作命令打开.gz文件,并读取其内容到内存中。 ...