前言

从网络上下载的源码包,最常见的是tar.gz包,还有一部分是tar.bz2包,这篇文章以解压tar.bz2文件为示例来讲解Java的解压操作。

.tar: 打包

.bz2: 由具有高压缩率的压缩工具bzip2压缩

linux中的压缩和解压命令:

压缩:

tar -cjf test.tar.bz2 test

解压:

tar -jxvf test.tar.bz2

准备

由于需要使用TarInputStream类,在pom.xml中增加如下依赖:

<dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.9.7</version>
</dependency>

由于需要使用BZip2CompressorInputStream类,在pom.xml中增加如下依赖:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.18</version>
</dependency>

tar.bz2文件解压

创建目录:

/***  构建目录* @param outputDir 输出目录* @param subDir 子目录*/
private static void createDirectory(String outputDir, String subDir){File file = new File(outputDir);if(!(subDir == null || subDir.trim().equals(""))) {//子目录不为空file = new File(outputDir + File.separator + subDir);}if(!file.exists()){if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}file.mkdirs();}
}

解压缩tar.bz2文件

/*** 解压缩tar.bz2文件* @param file 压缩包文件* @param targetPath 目标文件夹* @param delete 解压后是否删除原压缩包文件*/
public static void decompressTarBz2(File file, String targetPath, boolean delete){FileInputStream fis = null;OutputStream fos = null;BZip2CompressorInputStream bis = null;TarInputStream tis = null;try {fis = new FileInputStream(file);bis = new BZip2CompressorInputStream(fis);tis = new TarInputStream(bis, 1024 * 2);// 创建输出目录createDirectory(targetPath, null);TarEntry entry;while((entry = tis.getNextEntry()) != null){if(entry.isDirectory()){createDirectory(targetPath, entry.getName()); // 创建子目录}else{fos = new FileOutputStream(new File(targetPath + File.separator + entry.getName()));int count;byte data[] = new byte[2048];while ((count = tis.read(data)) != -1) {fos.write(data, 0, count);}fos.flush();}}} catch (IOException e) {e.printStackTrace();}finally {try {if(fis != null){fis.close();}if(fos != null){fos.close();}if(bis != null){bis.close();}if(tis != null){tis.close();}} catch (IOException e) {e.printStackTrace();}}
}

更多java相关,请查看:

bz2解压命令_Java压缩技术 - tar.bz2解压缩相关推荐

  1. bz2解压命令_Linux下的tar压缩解压缩命令

    tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...

  2. Linux常用文件压缩/解压命令格式大全(tar、gzip、bzip2、zip、compress、cpio、compress、dd)建议收藏

    Linux常用文件压缩/解压命令格式大全 1. tar 2. gzip 3. bzip2 4. zip 5. compress 6. cpio 7.dd 1. tar 打包备份后的文件包缀:.tar ...

  3. Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比

    常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...

  4. Linux下常用压缩 解压命令和压缩比率对比

    https://www.cnblogs.com/joshua317/p/6170839.html Linux下常用压缩 解压命令和压缩比率对比 常用的格式有: tar, tar.gz(tgz), ta ...

  5. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...

  6. linux gz文件压缩比,浅谈Linux下各种压缩 解压命令和压缩比率对比.doc

    浅谈Linux下各种压缩 解压命令和压缩比率对比 浅谈Linux下各种压缩 解压命令和压缩比率对比 Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的. ...

  7. bz2解压命令_tar 命令

    tar命令 -c 压缩 -x 解压 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名. -v 显示过程 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 -z:有gzi ...

  8. gzp解压命令 linux_Linux-压缩解压命令(gzip,zip,tar,bzip)

    1.命令:gzip  (压缩文件) 压缩文件后缀.gz ps: gzip test.txt  结果:生成文件test.txt.gz,原文件test.txt消失. 注意:只能压缩文件,不能压缩目录,压缩 ...

  9. Linux中常用压缩、解压命令和压缩比率对比

    本人有一个待解决的问题:当需要压缩比较大的文件,比如1T的时候,如何看到压缩文件进度?挂在后台完全没办法知道最后压缩的文件是不是完整! linux常用的压缩格式为:zip,tar.gz,tar,tar ...

最新文章

  1. 贪心:jump 游戏(获取最少跳跃的次数以及跳跃路径)
  2. Back Propagation Nerual Networks
  3. LeetCode Scramble String
  4. 基于人工神经网络的识别C语言,实验一基于人工神经网络的数码识别.doc
  5. 嵌入式系统开发者需要掌握什么技术?
  6. 来自java文档 InputStream类
  7. 15.立体几何——介绍,为什么多个视图,深度和形状线索 测验,人类如何在3D中看到东西_1
  8. Linux系统日志及screen工具
  9. 进程控制(PCB,进程ID,进程状态,fork函数,文件共享)
  10. 小学计算机课的微案例,全国中小学信息技术课程教学案例大赛获奖作品 趣味造型制作.doc...
  11. 笔记本win10相机打不开 无法启动 显示灰色相机 怎么办
  12. Unity渲染(四):Shader着色器基础入门之获取当前屏幕贴图
  13. HTML写简历表格及内容
  14. [年终总结]这就是2016的我
  15. C# 之 概率随机数
  16. 3 - Error writing file 'C:\Windows\TEMP\MY18F3.tmp' (Errcode: 28)
  17. 用c语言实现矩阵的转置算法,C++实现矩阵原地转置算法
  18. 电路及esd静电防护
  19. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植
  20. Mysql数据库和navicat

热门文章

  1. Unity计划放弃支持部分图形特性
  2. Android音视频之AudioRecord录音(一)
  3. Oracle数据库实现主键自增(利用sequence)和分页查询(利用rownum)
  4. 虚拟化软件Xen的简单应用
  5. 用xmanager登陆Linux图形界面
  6. 笔记11:GDI 制作数字验证码
  7. 解决:虚拟机能ping通主机,主机ping不通虚拟机
  8. 包含html语言的超链接标记的网页_HTML是什么?
  9. 语言中的petchar运用_自闭症儿童语言障碍家庭训练,需要融入这些方法
  10. Rabbitmq的原生javaAPI讲解