/**
* compress file
*
* @param in
* @param out
* @param compressionAlgorithm
* @param calucateCompressedMd5
* @param listener
* @return
* @throws TemplateServiceException
*/
public final static String compress(File in, File out,
String compressionAlgorithm, boolean calucateCompressedMd5,
FileHandleListener listener) throws TemplateServiceException {
try {
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
return compress(
fis,
fos,
compressionAlgorithm,
calucateCompressedMd5,
listener);
} catch (FileNotFoundException e) {
throw new TemplateServiceException(
TemplateServiceException.FILE_NOT_EXIST_ERROR,
new String[] { in.getPath() });
}
}
public final static String compress(InputStream in, OutputStream out,
String compressionAlgorithm, boolean calucateCompressedMd5,
FileHandleListener listener) throws TemplateServiceException {
try {
MessageDigest md = null;
if (calucateCompressedMd5) {
md = MessageDigest.getInstance("md5");
out = new DigestOutputStream(out, md);
}
CompressorStreamFactory csf = new CompressorStreamFactory();
out = csf.createCompressorOutputStream(
toCompressorAlgorithm(compressionAlgorithm),
out);
if (listener != null) {
out = new FileHandleOutputStream(out, listener);
}
FileCopyUtils.copy(in, out, null);
if (calucateCompressedMd5) {
byte[] md5Bytes = md.digest();
String md5 = OutputFormatter.binaryToHex(md5Bytes);
return md5;
}
return null;
} catch (NoSuchAlgorithmException e) {
throw new TemplateServiceException(TemplateServiceException.UNKNOWN_ERROR);
} catch (CompressorException e) {
throw new TemplateServiceException(TemplateServiceException.UNKNOWN_ERROR);
}
}
/**
* uncompress file
*
* @param in
* @param out
* @param compressionAlgorithm
* @param calucateUncompressedMd5
* @param listener
* @return
* @throws TemplateServiceException
*/
public final static String uncompress(File in, File out,
String compressionAlgorithm, boolean calucateUncompressedMd5,
FileHandleListener listener) throws TemplateServiceException {
try {
FileInputStream fis = new FileInputStream(in);
FileOutputStream fos = new FileOutputStream(out);
return uncompress(
fis,
fos,
compressionAlgorithm,
calucateUncompressedMd5,
listener);
} catch (FileNotFoundException e) {
throw new TemplateServiceException(
TemplateServiceException.FILE_NOT_EXIST_ERROR,
new String[] { in.getPath() });
}
}
public final static String uncompress(InputStream in, OutputStream out,
String compressionAlgorithm, boolean calucateUncompressedMd5,
FileHandleListener listener) throws TemplateServiceException {
try {
MessageDigest md = null;
if (calucateUncompressedMd5) {
md = MessageDigest.getInstance("md5");
out = new DigestOutputStream(out, md);
}
CompressorStreamFactory csf = new CompressorStreamFactory();
in = csf.createCompressorInputStream(
toCompressorAlgorithm(compressionAlgorithm),
in);
if (listener != null) {
out = new FileHandleOutputStream(out, listener);
}
FileCopyUtils.copy(in, out, null);
if (calucateUncompressedMd5) {
byte[] md5Bytes = md.digest();
String md5 = OutputFormatter.binaryToHex(md5Bytes);
return md5;
}
return null;
} catch (NoSuchAlgorithmException e) {
throw new TemplateServiceException(TemplateServiceException.UNKNOWN_ERROR);
} catch (CompressorException e) {
throw new TemplateServiceException(TemplateServiceException.UNKNOWN_ERROR);
}
}
public final static String toCompressorAlgorithm(String compressionAlgorithm) {
if ("bz2".equalsIgnoreCase(compressionAlgorithm)
|| "bzip2".equalsIgnoreCase(compressionAlgorithm)) {
return CompressorStreamFactory.BZIP2;
} else if ("gz".equalsIgnoreCase(compressionAlgorithm)
|| "gzip".equalsIgnoreCase(compressionAlgorithm)) {
return CompressorStreamFactory.GZIP;
} else if ("xz".equalsIgnoreCase(compressionAlgorithm)) {
return CompressorStreamFactory.XZ;
} else if ("pack200".equalsIgnoreCase(compressionAlgorithm)) {
return CompressorStreamFactory.PACK200;
} else {
return compressionAlgorithm;
}
}
分享到:
相关推荐
java压缩解压文件
这篇博客文章《Java压缩解压文件》可能会详细讲解如何使用Java API来处理ZIP文件格式。 在Java中,我们可以利用内置的`java.util.zip`包来处理压缩和解压操作。`ZipOutputStream`和`ZipInputStream`是这个包中的...
**解压文件:** 解压ZIP文件的过程则相反,需要创建一个`ZipInputStream`,并逐个读取并处理ZIP条目。以下是一般的解压步骤: 1. 打开ZIP文件的输入流。 2. 创建`ZipInputStream`,将输入流作为参数传入。 3. 循环...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
Java在Linux环境下对GZ压缩文件的处理是一个常见的任务,特别是在处理大文件或者网络传输时。GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ...
总的来说,这个压缩包提供了一个完整的Java解决方案,用于压缩和解压文件。通过学习和理解`ZipFileList.java`的实现,开发者可以掌握在Java中处理ZIP文件的基本技巧,同时也可以了解如何集成第三方库如Ant来增强功能...
JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...
在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...
基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....
// 使用Apache Ant解压文件 import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Unzip; Project project = new Project(); Unzip unzipTask = new Unzip(); unzipTask.setSrc(new File(...
在Java编程语言中,处理文件的压缩和解压任务是一项常见的需求。本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util....
在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java API来压缩和解压缩`.zip`、`.rar`和`.tar`这三种常见的文件格式。 首先,对于`.zip`文件...