java解压7z_Java压缩技术之解压篇,支持:ZIP、RAR、7Z、TAR、GZ、TAR.GZ、BZ2、TAR.BZ2...

本文详细介绍了使用Java进行解压操作的方法,包括解压ZIP, RAR, 7Z, TAR, GZ, TAR.GZ, BZ2, TAR.BZ2等不同格式的文件。通过自定义的`FileType`枚举类管理和判断文件类型,使用JDK内置库解压tar文件,以及借助Apache的commons.compress库解压bz2和tar.bz2文件。同时,文章提供了解压缩过程中需要注意的细节,如解压后删除原压缩包的安全性问题。" 127093618,10230294,经纬度计算与D3js应用:中心点、面积算法与坐标转换,"['前端开发', 'JavaScript', 'GIS', '地图算法', 'D3js']
摘要由CSDN通过智能技术生成

前言

这篇文章主要讲解Java解压的操作,后续会写一篇关于压缩的文章。

提醒:文章中有些片段看似代码很多,其实去除trycatch、释放资源真正有用的代码没几句,解压其实都很简单,主要用心去观察,都是依葫芦画瓢。

首先,先写一个类似辅助的视图类

1 public enumFileType {2 //未知

3 UNKNOWN,4 //压缩文件

5 ZIP, RAR, _7Z, TAR, GZ, TAR_GZ, BZ2, TAR_BZ2,6 //位图文件

7 BMP, PNG, JPG, JPEG,8 //矢量图文件

9 SVG,10 //影音文件

11 AVI, MP4, MP3, AAR, OGG, WAV, WAVE12 }

这个类主要是用来将各种文件的类型集中管理,当然,不写这个类也是可以的,可以直接用字符串去表示。

然后,我还写了一个获取文件真实类型的方法

为什么要写这个方法呢?因为,我们是可以直接去修改文件的后缀的,这样很危险!

1   /**

2 * 获取文件真实类型3 *4 *@paramfile 要获取类型的文件。5 *@return文件类型枚举。6 */

7 private staticFileType getFileType(File file){8 FileInputStream inputStream =null;9 try{10 inputStream = newFileInputStream(file);11 byte[] head = new byte[4];12 if (-1 ==inputStream.read(head)) {13 returnFileType.UNKNOWN;14 }15 int headHex = 0;16 for (byteb : head) {17 headHex <<= 8;18 headHex |=b;19 }20 switch(headHex) {21 case 0x504B0304:22 returnFileType.ZIP;23 case 0x776f7264:24 returnFileType.TAR;25 case -0x51:26 returnFileType._7Z;27 case 0x425a6839:28 returnFileType.BZ2;29 case -0x74f7f8:30 returnFileType.GZ;31 case 0x52617221:32 returnFileType.RAR;33 default:34 returnFileType.UNKNOWN;35 }36 }catch(Exception e){37 e.printStackTrace();38 }finally{39 try{40 if(inputStream!=null){41 inputStream.close();42 }43 } catch(IOException e) {44 e.printStackTrace();45 }46 }47 returnFileType.UNKNOWN;48 }

这里是通过文件头信息来判断什么类型的。其他文件的头文件信息,这里就不展示了。如果有需要,可以拿文件来跑跑,看看headHex是啥值就行了。

最后还有一个创建目录的辅助方法

1   /**

2 * 构建目录3 *@paramoutputDir 输出目录4 *@paramsubDir 子目录5 */

6 private static voidcreateDirectory(String outputDir, String subDir){7 File file = newFile(outputDir);8 if(!(subDir == null || subDir.trim().equals(""))) {//子目录不为空

9 file = new File(outputDir + File.separator +subDir);10 }11 if(!file.exists()){12 if(!file.getParentFile().exists()){13 file.getParentFile().mkdirs();14 }15 file.mkdirs();16 }17 }

tar文件解压

接下来是正儿八经的正菜了。第一个来看怎么解压tar文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值