`

文件解压和压缩

    博客分类:
  • 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;
}
 }

 

 

分享到:
评论

相关推荐

    解压专家-文件解压和压缩.apk

    解压专家-文件解压和压缩.apk

    易语言模块文件压缩解压.rar

    在“易语言模块文件压缩解压.rar”这个压缩包中,包含的资源很可能是用于处理易语言程序中文件压缩和解压功能的模块。下面将详细介绍这个主题中的相关知识点。 一、易语言模块 易语言模块是易语言编程中的一个重要...

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

    - 首先,创建`File`对象分别代表原始的GZ压缩文件和解压后的目标文件。 - 使用`FileInputStream`打开GZ文件以读取数据,然后通过`GZIPInputStream`创建一个流,该流可以解压GZ格式的数据。 - 创建一个`...

    BMP_bmp解压_bmp压缩_bmp怎么解压缩_bmp文件解压_bmp文件压缩解压_

    标题和描述提到的“BMP_bmp解压_bmp压缩_bmp怎么解压缩_bmp文件解压_bmp文件压缩解压”都是围绕BMP文件的压缩和解压缩操作展开的。接下来,我们将深入探讨BMP文件的结构、压缩原理以及如何进行压缩与解压缩。 首先...

    快速解压和压缩rar文件【bat脚本】

    电脑已安装rar.exe程序 内含解压rar文件和压缩rar文件的bat脚本及使用说明 使用简单 建议直接存在桌面进行解压和压缩操作,只需要修改rar文件名即可

    linux压缩解压缩命令大全

    .tar 文件解压和压缩 ------------------- .tar 文件是 Linux 中最常见的压缩格式之一。解压 .tar 文件可以使用以下命令: ``` tar xvf FileName.tar ``` 压缩文件夹使用以下命令: ``` tar cvf FileName.tar ...

    C++ Zlib库实现zip文件压缩解压(支持递归压缩)

    本篇文章将详细介绍如何在`C++`中利用`Zlib`库实现对`zip`文件的压缩和解压,并特别关注其支持的递归压缩特性,以及如何将其与自动更新功能结合使用。 首先,我们需要理解`Zlib`库的基本原理。`Zlib`库基于`DEFLATE...

    shellzip_文件压缩_解压_压缩_

    在IT行业中,文件压缩和解压是日常工作中常见的操作,特别是在处理大量数据或者进行网络传输时。本节将深入探讨shellzip的相关知识点,这是一种在VBA(Visual Basic for Applications)或VB(Visual Basic)环境中...

    易语言解压目录中的所有压缩文件源码.7z

    在易语言中,解压压缩文件通常需要调用第三方库或者系统API。例如,可以使用WinRAR SDK或7-Zip API来实现这个功能。7-Zip是一个免费的压缩软件,它的API提供了创建、读取和修改压缩文件的能力,包括常见的ZIP、7Z、...

    Zip文件压缩和解压

    Zip文件压缩和解压是日常计算机操作中常见的一种文件处理方式。Zip格式是一种高效的数据存储格式,它能够将多个文件和文件夹打包成一个单一的压缩文件,从而节省磁盘空间,便于传输和备份。本篇文章将深入探讨Zip...

    基于哈夫曼树的文件压缩和解压(QT可视化界面)

    2. 文件操作:利用QT提供的文件操作API读取和写入文件,进行压缩和解压操作。 3. 哈夫曼树构建与编码:在后台实现哈夫曼树的构建和编码过程,通过信号和槽机制将结果更新到界面上。 4. 进度反馈:在压缩和解压缩过程...

    C++解压以及压缩文件

    本主题涉及的是如何在C++环境中处理压缩和解压缩文件,特别是使用zip和unzip功能。以下是对这个话题的详细阐述: 1. **压缩文件**: 压缩文件是将大文件通过特定算法转换成较小文件的过程,目的是节省存储空间和...

    文件压缩解压接口调用

    首先,"文件解压接口已写,直接生成文件DLL、LIB文件,调用"这部分意味着已经有一个完成的解压缩模块,该模块可以生成动态链接库(DLL)和静态库(LIB)文件。DLL文件是Windows操作系统中的一种程序组件,允许不同...

    linux常见压缩文件解压命令

    ### Linux常见压缩文件解压命令详解 在Linux操作系统中,处理各种类型的压缩文件是一项非常常见的需求。本篇文章将深入解析几种常用的压缩与解压缩命令及其用法,包括但不限于`tar`、`gzip`、`bzip2`、`zip`等。 #...

    07-Linux解压缩

    .gz文件解压和压缩 ------------------ .gz文件是使用gzip命令压缩的文件。基本语法为: gunzip FileName.gz // 解压 gzip FileName // 压缩 其中,gunzip命令用于解压.gz文件,gzip命令用于压缩文件。 .tar.gz...

    C语言实现哈夫曼编码压缩和解压各种文件

    实验内容:写出程序,利用哈弗曼编码实现对文件的压缩,并能解压文件。 实验步骤: 1、压缩 (1) 统计原始文件中各字节出现的概率(次数); (2) 采用哈弗曼算法对各字节进行编码,建立哈弗曼对照表; a) 构造...

    文件压缩和解压

    文件压缩和解压是计算机操作中的常见任务,它涉及到数据存储效率和文件传输便捷性的问题。在日常工作中,我们经常需要处理大量的文件,压缩技术可以帮助我们有效地管理这些文件,节省硬盘空间,同时使得文件在网络上...

    文件解压和压缩小应用

    一款可以实现文件解压和压缩小应用源码,该应用是实现了怎样利用第三方类库 ZipArchive 来解压和压缩.zip文件的,还可以实现了先从网络下载一个.zip文件下来,然后对它进行解压,最后可以对再进行压缩等功能,也基本...

    MFC的极其简单的压缩和解压代码

    本篇将重点介绍如何利用MFC进行文件的压缩和解压操作,以及相关的知识点。 首先,`unzip.cpp`和`zip.cpp`是实现压缩和解压功能的源代码文件,它们可能包含了对压缩库的具体实现,如ZIP或RAR格式的处理。`unzip.h`和...

    解压rar压缩文件类库

    RAR是一种流行的压缩文件格式,由Rarlab公司的尤金·罗谢尔开发,它提供了高效的数据压缩和分卷存储功能。解压RAR压缩文件类库是编程领域中用于处理RAR文件的工具,允许开发者在应用程序中集成RAR文件的读取和解压...

Global site tag (gtag.js) - Google Analytics