这篇文章主要讲解Java解压的操作,后续会写一篇关于压缩的文章。
提醒:文章中有些片段看似代码很多,其实去除trycatch、释放资源真正有用的代码没几句,解压其实都很简单,主要用心去观察,都是依葫芦画瓢。
首先,先写一个类似辅助的视图类 1 public enum FileType { 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 * @param file 要获取类型的文件。 5 * @return 文件类型枚举。 6 */ 7 private static FileType getFileType(File file){ 8 FileInputStream inputStream =null; 9 try{10 inputStream = new FileInputStream(file);11 byte[] head = new byte[4];12 if (-1 == inputStream.read(head)) {13 return FileType.UNKNOWN;14 }15 int headHex = 0;16 for (byte b : head) {17 headHex