`

java 压缩、解压文件

阅读更多

/**
  * 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压缩解压文件

    这篇博客文章《Java压缩解压文件》可能会详细讲解如何使用Java API来处理ZIP文件格式。 在Java中,我们可以利用内置的`java.util.zip`包来处理压缩和解压操作。`ZipOutputStream`和`ZipInputStream`是这个包中的...

    安卓java 压缩解压文件

    **解压文件:** 解压ZIP文件的过程则相反,需要创建一个`ZipInputStream`,并逐个读取并处理ZIP条目。以下是一般的解压步骤: 1. 打开ZIP文件的输入流。 2. 创建`ZipInputStream`,将输入流作为参数传入。 3. 循环...

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

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

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

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

    java 解压,压缩linux GZ压缩文件

    Java在Linux环境下对GZ压缩文件的处理是一个常见的任务,特别是在处理大文件或者网络传输时。GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ...

    java操作压缩文件和解压文件实例代码(经测试)

    总的来说,这个压缩包提供了一个完整的Java解决方案,用于压缩和解压文件。通过学习和理解`ZipFileList.java`的实现,开发者可以掌握在Java中处理ZIP文件的基本技巧,同时也可以了解如何集成第三方库如Ant来增强功能...

    JAVA压缩解压JAVA压缩解压

    JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

    实现java文件压缩与解压

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

    用Java压缩解压ZIP文件

    用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    java压缩zip文件解决中文乱码问题

    在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...

    java获取压缩文件的名称并解压

    在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...

    基于java的开发源码-用GZIP压缩解压文件.zip

    基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩...

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

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

    在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....

    java 操作Zip文件(压缩、解压、加密).zip

    // 使用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编程语言中,处理文件的压缩和解压任务是一项常见的需求。本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util....

    java 压缩/解压 .zip/.rar/.tar 文件

    在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java API来压缩和解压缩`.zip`、`.rar`和`.tar`这三种常见的文件格式。 首先,对于`.zip`文件...

Global site tag (gtag.js) - Google Analytics