`
ziye520
  • 浏览: 13387 次
  • 性别: 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 解析 tar gz文件 两种方法

    在Java中解析这种类型的文件,通常需要两个步骤:首先解压gzip,然后解包tar。这里我们将详细探讨两种不同的方法来实现这个过程。 方法一:使用Apache Commons Compress库 Apache Commons Compress库是Java社区...

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

    ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。

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

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

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

    总之,Java的GZIP压缩技术在Web开发中扮演着重要角色,能够有效地减小数据传输量,提升用户体验。通过理解和应用这些知识,开发者可以构建更高效、更快速的网络服务。同时,深入源码有助于我们掌握更底层的细节,为...

    基于Java的用GZIP压缩解压文件.zip

    对于解压缩GZIP文件,我们需要使用`GZIPInputStream`包装`FileInputStream`。以下是解压缩文件的Java代码示例: ```java import java.io.*; import java.util.zip.*; public class GzipDecompress { public ...

    java解压缩文件

    Java解压缩文件是Java开发中常见的一项操作,特别是在处理数据传输、软件安装包或资源包时。本篇文章将深入探讨如何使用Java进行文件的解压缩,以及相关工具和源码的使用。 首先,Java标准库提供了`java.util.zip`...

    eclipse-java-2021-09-R-linux-gtk-x86_64.tar.gz

    “eclipse-java-2021-09-R-linux-gtk-x86_64.tar.gz”是一个归档文件,采用tar格式打包,并使用gzip进行压缩。在Linux中,可以使用`tar`命令解压,如`tar -zxvf eclipse-java-2021-09-R-linux-gtk-x86_64.tar.gz`,...

    java解析tar文档

    Java解析Tar文档主要涉及到的是对tar格式的归档文件进行读取和操作的技术。Tar是一种在Unix和类Unix系统中广泛使用的打包工具,它可以将多个文件和目录打包成一个单一的归档文件,便于存储、备份和传输。在Java中...

    mysql-connector-java-5.1.40.tar.gz

    Linux中的`tar`命令用于处理归档文件,而`.gz`表示文件被gzip压缩了。解压缩的命令通常是: ```bash tar -zxvf mysql-connector-java-5.1.40.tar.gz ``` 这条命令的参数解析如下: - `-z` 表示使用gzip解压缩 - `-...

    java 解析 tar gz.rar

    `.tar.gz`文件实际上是先用tar打包,再用gzip压缩,因此在Java中解析这种文件需要两个步骤:解压(gzip)和解包(tar)。 下面我们将深入探讨如何在Java中解析.tar.gz文件,并涉及相关的Java API和技术。 1. **...

    毕业答辩-JAVA文件压缩与解压缩实践(源代码论文).rar

    Java文件压缩与解压缩是计算机科学中的一个常见任务,尤其在数据存储、传输和备份等领域。本实践项目涉及到了使用Java编程语言实现文件的压缩和解压缩功能,这对于理解和掌握文件处理技术至关重要。在此,我们将深入...

    【计算机专业Java-毕业设计100套之】JAVA文件压缩与解压缩实践(源代码+论文)

    在计算机科学领域,Java语言广泛应用于各种软件开发,包括文件处理和数据压缩。这个毕业设计项目专注于使用Java实现文件的压缩与解压缩功能,对于学习Java编程和理解数据压缩原理的学生来说,是一个非常实用的实践...

    JAVA文件压缩与解压缩实践(源代码+论文).zip

    Java文件压缩与解压缩是Java开发...以上是对"JAVA文件压缩与解压缩实践(源代码+论文)"的详细解析,希望对你的学习和项目开发有所帮助。通过理解和应用这些知识,你将能够熟练地处理Java环境下的文件压缩和解压缩任务。

    基于Java的实例源码-数据压缩与传输实例.zip

    本实例聚焦于“基于Java的数据压缩与传输”,通过源码解析,我们可以深入理解Java如何实现这两个关键功能。 首先,数据压缩是提高存储效率和减少网络传输时间的重要手段。在Java中,我们可以使用内置的`java.util....

    基于java的开发源码-远程文件传输工具 MammothCopy.zip

    1. 压缩与解压缩:为了减少传输时间,MammothCopy可能使用了GZIP或Zip等压缩算法,先压缩文件再进行传输,提高传输效率。 2. 断点续传:对于大文件,断点续传功能是必要的,可以避免因网络中断而需要重新传输整个...

    仿zip压缩软件的java代码|zip.rar

    【标题】:仿zip压缩软件的java代码 在Java编程中,实现自定义的压缩...通过阅读和分析这些代码,你可以了解到如何在Java中实现文件的压缩、解压缩、分割以及进度反馈,同时也能掌握Swing框架下界面设计的基本原理。

    netty对象传输gzipdemo

    分析这个文件可以帮助你深入理解Netty中的对象传输和gzip压缩的实际应用。 通过这样的示例,你可以学习到如何利用Netty的灵活性和高效性,结合gzip压缩来优化网络通信。这在大数据传输、实时通信系统或者分布式服务...

    用java实现的压缩文件功能

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

    毕业设计项目开发-JAVA文件压缩与解压缩实践(源代码+论文).zip

    Java文件压缩与解压缩是软件开发中的一个常见需求,尤其在大数据传输、存储优化和程序打包等场景下显得尤为重要。本项目围绕这个主题展开,旨在为毕业生提供一个实用的编程实践,通过Java语言实现文件的压缩和解压缩...

Global site tag (gtag.js) - Google Analytics