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

java 解析压缩文件-gzip

    博客分类:
  • 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 java.util.zip.GZIPInputStream;

import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream;

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

	private static final String SUFFIX_TAR_GZ = ".tar.gz";

	@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_TAR_GZ, "")
					+ File.separator;
		}

		try {
			// create a gzip input stream
			TarInputStream tarIn = new TarInputStream(new GZIPInputStream(
					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());
		}
	}

}

 

分享到:
评论

相关推荐

    Java用GZIP压缩解压文件.rar

    一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    2.Gzip是将文件的存储空间压缩保存,文件名后缀是.gz 3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。...

    发布一个基于BER编码的CDR文件高速解码程序——destroy for linux

    不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。...

    Java压缩技术(五) GZIP相关——浏览器解析

    NULL 博文链接:https://snowolf.iteye.com/blog/643443

    java压缩技术

    ZLib ZIP 压缩——Java 原生实现 ZIP 解压缩——Java 原生实现 GZIP——Java 原生实现 GZIP 相关——浏览器解析 BZIP2——Commons 实现 TAR——Commons 实现

    netty对象传输gzipdemo

    netty5 对象传输demo

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    java源码包4

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java源码包3

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java源码包2

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    安卓java读取网页源码-AndroidStudy:Android进阶内容整理

    安卓java读取网页源码 AndroidStudy Android进阶内容整理 blog地址链接: 书籍: 1.Android群英传 2.Android艺术开发与探索 3.Android设计模式 第三方框架 详细使用步骤加源码解析:1.会使用 2.懂原理 3.框架源码...

    对chunked编码进行解码

    一个对chunked编码进行解码的例子,通过java socket实现发送http请求,对gzip压缩的消息体进行解码处理。

    java版商城源码下载-linux-server-config:linux-服务器-配置

    zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装 openssl openssl-devel openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔 解压 tar -zxvf nginx-...

    javautils:Java实用程序

    zip,gzip等文件压缩工具(待补充) 5 com.wind.office excel读写工具类(待补充) 6 com.wind.network http请求工具类,android均可使用(待补充) 7 com.wind.xml xml解析工具类 8 com.wind.jdbc java jdbc工具类, ...

    CommonUtil:轻便简单的Java常用工具类库

    GZIPUtil(通过Gzip算法压缩和解压) CaptchaUtil(验证码工具类) UrlParamsUtil(对URL参数处理的工具类) LangArabicNumConvertUtil(语言数字与阿拉伯数字转换工具类) StringUtil(字符串工具类) EmailUtil(邮件发送...

Global site tag (gtag.js) - Google Analytics