在开发过程中有时候会需要解压 gzip 或者 tar.gz 文件,下面封装了一个工具类,可以解压 gzip 和 tar.gz 文件。

package com.example.demo.common.utils;
/*** Created by qianghaohao on 2021/5/23*/import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;/*** @description:* @author: qianghaohao* @time: 2021/5/23*/
public class FileUtils {private static final int BUFFER_SIZE = 1024;/*** 解压 gzip 文件** @param input* @param output**/public static void decompressGzip(File input, File output) throws IOException {try (GZIPInputStream in = new GZIPInputStream(new FileInputStream(input))) {try (FileOutputStream out = new FileOutputStream(output)) {byte[] buffer = new byte[BUFFER_SIZE];int len;while((len = in.read(buffer)) != -1) {out.write(buffer, 0, len);}}}}/*** 解压 tar.gz 文件到指定目录** @param tarGzFile  tar.gz 文件路径* @param destDir  解压到 destDir 目录,如果没有则自动创建**/public static void extractTarGZ(File tarGzFile, String destDir) throws IOException {GzipCompressorInputStream gzipIn = new GzipCompressorInputStream(new FileInputStream(tarGzFile));try (TarArchiveInputStream tarIn = new TarArchiveInputStream(gzipIn)) {TarArchiveEntry entry;while ((entry = (TarArchiveEntry) tarIn.getNextEntry()) != null) {if (entry.isDirectory()) {File f = new File(destDir + "/" + entry.getName());boolean created = f.mkdirs();if (!created) {System.out.printf("Unable to create directory '%s', during extraction of archive contents.\n",f.getAbsolutePath());}} else {int count;byte [] data = new byte[BUFFER_SIZE];FileOutputStream fos = new FileOutputStream(destDir + "/" + entry.getName(), false);try (BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER_SIZE)) {while ((count = tarIn.read(data, 0, BUFFER_SIZE)) != -1) {dest.write(data, 0, count);}}}}}}
}

使用示例:

    @Testpublic void decompressGizpTest() throws IOException {File input = new File("/xxx/output.gz");File output = new File("/xxx/output");FileUtils.decompressGzip(input, output);}@Testpublic void decompressTarGizpTest() throws IOException {File input = new File("/xxx/output.tar.gz");FileUtils.extractTarGZ(input, "/tmp/");}

Java 解压 gzip 和 tar.gz 文件相关推荐

  1. 解压命令linux tgz,tar 解压_linux中的“tar命令”怎么解压“.tgz”与“.tar.gz”文件?...

    在LINUX下如何将tar压缩文件解压到指定的目录下 一.解压.tar.gz格式到指定的目录下: 命令格式为:tar -zxvf [压缩包文件名.tar.gz] -C  [路径]/ 例如:tar -z ...

  2. 【Linux】用Linux命令一次性解压多个.tar.gz文件

    一些大型的数据集通常以多个压缩包的形式保存,如下图所示,逐个解压就显得不那么明智了 利用Linux命令行可以用一行命令一次性解压多个压缩包. 对于解压多个.gz文件的,用此命令: for gz in ...

  3. Linux解压.tgz,.tar.gz文件(tar详细参数使用介绍)

    一.Linux操作.tgz文件 1.解压.tgz文件: (1)解压到当前文件夹 命令:tar zxvf  文件名.tgz -C ./ eg:tar zxvf demo.tgz -C ./ (2)解压到 ...

  4. linux系统安装.tar.gz文件,Linux中下载、解压、安装.tar.gz文件

    一.将解压包发送到linux服务器上: 1.在windos上下载好.tar.gz文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项 ...

  5. Mac解压Linux压缩.tar.gz文件

    报错:gzip decompression failed tar: Error exit delayed from previous errors.Mac有可能对其他文件格式不兼容,如NTFS等... ...

  6. linux中.sql.gz文件解压,linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...

  7. 如何在Windows上创建,解压,更新.tar.gz压缩包

    Linux上常用的压缩包格式是.tar.gz..tar.gz文件的创建过程有两步.首先把文件打包到tar文件中,然后用gzip压缩tar文件.这里分享下如何在Windows上创建,解压,更新.tar. ...

  8. java解压加密的7z格式文件

    引言 最近在 项目中需要解压带有密码的.7z文件,然后获得里面的数据,之前都是zip 文件没有接触过解压7z类型的 文件,在这分享一下解压工具类,该 工具类可以同时解压带有密码的7z文件和zip文件. ...

  9. 利用R语言解压与压缩 .tar.gz .zip .gz .bz2 等文件

    最近尝试用 R 对一些文件进行批量的解压与压缩,这里记录一些常用的解压与压缩的方法. 由于解压与压缩是对称的两种方法,这里我们着重以对文件的解压为例,分不同的格式进行讲解. .zip 压缩:zip() ...

  10. java gz文件解压_java – 批量解压缩.gz文件

    a)Zip是一种存档格式,而gzip则不是.因此,除非(例如)你的gz文件是压缩的tar文件,否则入口迭代器没有多大意义.你想要的可能是: File outFile = new File(infile ...

最新文章

  1. GitHub开源城市结构公交路线数据可视化
  2. 电厂运维的cis数据_变配电智能化运维作用和优点,智慧供配电物联网
  3. 《linux c编程指南》学习手记4
  4. 局域网聊天 一个十分热门的话题
  5. 博弈论(巴什博奕,威佐夫博弈,尼姆博弈)
  6. iptables官方文档
  7. 推翻相对论的专家,就差安排明天几点日出了
  8. Attention!神经网络中的注意机制到底是什么?
  9. C#如何实现 ASCII码与字母的互相转换?
  10. 慎用!网传一公司用微软雅黑和盗版PS损失近3000万
  11. 黑马程序员----------Java新特性反射 泛型
  12. SpringBoot日记本系统 :关键字搜索BUG(Mybatisplus and和or的问题)
  13. webpack 5高级配置优化
  14. 前端如何对视频进行截屏加标注
  15. JavaWeb个人博客项目:手把手教你实现博客后台系统之管理员管理模块5
  16. matlab频谱分析中振幅的物理意义,对速度信号进行傅里叶谱分析之后,其纵坐标对应的幅值的物理意义是什么?是速度,还是振幅...
  17. 如何修改C:\Windows\System32\drivers\etc\hosts文件
  18. java大数据培训专业课程与教学模式的介绍
  19. Java判断字符串是否为数字(正负、小数)
  20. 【软考】系统集成项目管理工程师(十四)项目合同管理

热门文章

  1. java项目ppt介绍_Java课设项目介绍及分析.ppt
  2. java的链表(LinkedList类)
  3. R语言、Meta分析、MATLAB在生态环境领域里的应用
  4. 银行IT架构变迁史(金融IT基础架构)
  5. Java创建Excel文档(自定义格式)
  6. java 追加文件换行_java 追加换行txt
  7. RabitMQ简介和原理分析(一)
  8. 【转】西冷牛排,菲力牛排,眼肉牛排,雪花牛排,T骨牛排,沙朗牛排有什么不同?
  9. Exadata X8发布
  10. PADS9.5 导入立创元器件库卡顿