`
ziye520
  • 浏览: 13448 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java 解析压缩文件-BZ2

    博客分类:
  • Java
阅读更多
package impl;

import inter.AbstractUnCompressService;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream;

/**
 * This class is used to uncompress bz2 compress file
 * @author Jacky.Dong
 *
 */
public class BZ2UnCompressServiceImpl extends AbstractUnCompressService {

	private static final String SUFFIX_BZ2 = ".tar.bz2";

	@Override
	public void unCompressFolder(String folder) {
		// TODO Auto-generated method stub

	}

	@Override
	public void unCompressFile(String inputFilePath, String outputDir)
			throws IOException {

		File inputFile = new File(inputFilePath);
		if (outputDir == null) {
			outputDir = inputFile.getPath().replace(SUFFIX_BZ2, "")
					+ File.separator;
		}

		try {
			// create a gzip input stream
			TarInputStream tarIn = new TarInputStream(new BZip2CompressorInputStream(
					new FileInputStream(inputFile)));

			TarEntry entry = null;
			while ((entry = tarIn.getNextEntry()) != null) {
				// if entry is a directory ,we should create a new directory
				if (entry.isDirectory()) {
					createDirectory(outputDir, entry.getName());// 创建空目录
				} else {
					// if entry is a file ,we should add this file to related
					// folder and write content to the file
					File tmpFile = new File(outputDir + File.separator
							+ entry.getName());
					createDirectory(tmpFile.getParent() + File.separator, null);
					OutputStream out = null;

					try {
						out = new FileOutputStream(tmpFile);
						int length = 0;
						byte[] b = new byte[BUFFEREDSIZE];

						while ((length = tarIn.read(b)) != -1) {
							out.write(b, 0, length);
						}
					} catch (IOException ex) {
						throw ex;
					} finally {
						if (out != null)
							out.close();
					}

				}
			}
		} catch (Exception ex) {
			System.err.println(ex.toString());
		}
	}
}

 

0
6
分享到:
评论

相关推荐

    java解析tar文档

    7. **处理GZ或BZ2压缩的tar文件**:有时,tar文件可能被gzip或bzip2进一步压缩,为了解压这些文件,你需要先使用`GZIPInputStream`或`BZip2CompressorInputStream`,然后再创建`TarInputStream`。 在实际开发中,你...

    用java实现的压缩文件功能

    本文将详细解析如何利用Java实现压缩文件的功能,并深入探讨相关的知识点。 首先,`java.util.zip`包提供了对ZIP文件格式的支持。在Java中,`ZipOutputStream`是用于创建ZIP文件的主要类,它继承自`...

    文件压缩解压缩

    tar文件可以与其他压缩工具(如gzip或bzip2)结合使用,形成如.tar.gz或.tar.bz2的压缩格式。 这个“Compressor-master”工具类可能包含以下核心功能: - **压缩**:对于zip和rar格式,工具可能使用了Java的第三方...

    apktool1.5.2.tar.bz2和apktool-install-linux-r05-ibot.tar.bz2打包下载

    这两个压缩文件,"apktool1.5.2.tar.bz2" 和 "apktool-install-linux-r05-ibot.tar.bz2" 提供了不同版本的APKTool,可能是针对不同操作系统或包含不同功能的版本。 首先,让我们深入了解APKTool的核心功能: 1. **...

    unix下常用解压和压缩命令.txt

    - `bzip2 FileName`:将 FileName 文件进行 bzip2 压缩,生成 FileName.bz2 文件。 ### 5. .tar.bz2 - 组合压缩格式 **解压**: - `tar jxvf FileName.tar.bz2`:首先使用 bzip2 解压,然后使用 tar 解包。 - `j`...

    MIME-type MIME-type MIME-type MIME-type

    - **.bz2**: `application/x-bzip2`,用于BZip2压缩文件。 #### 其他文件 - **.pdf**: 虽然未列出,但通常用于PDF文档,其MIME类型为 `application/pdf`。 - **.class**: `application/java` 或 `application/x-...

    java开源包10

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包1

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包4

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包101

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包5

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包8

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包3

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    common compress压缩源码

    《深入解析Common Compress压缩库》 在Java开发中,数据压缩是一项常用的技术,它可以有效减少文件存储空间,提高传输效率。Common Compress是Apache软件基金会提供的一个开源库,专门用于处理各种压缩格式,如ZIP...

    Java资源包01

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包2

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    imageMagick+ima4java配置

    - **下载内容**:im4java-1.3.2-src.tar.bz2 源码包。 - **使用方法**:解压后将jar包添加到项目的类路径中。 #### 三、配置环境变量 为了使ImageMagick能够在Java程序中被调用,需要进行环境变量的配置: 1. *...

    gdal3.6.3离线安装文档

    GDAL (Geospatial Data Abstraction Library) 是一个开源的库,用于处理地理空间数据,如...务必确保所有依赖项都正确安装,以确保 GDAL 能够在 CentOS 7 系统上正常工作,并且能够在 Java 服务中调用以解析地理数据。

Global site tag (gtag.js) - Google Analytics