java 解压zip rar_Java实现对zip和rar文件的解压缩

1 packagecom.svse.test;2 importjava.io.File;3 importjava.io.FileOutputStream;4 importjava.io.IOException;5 importjava.io.InputStream;6 importjava.io.OutputStream;7 importjava.util.Enumeration;8 importorg.apache.tools.zip.ZipEntry;9 importorg.apache.tools.zip.ZipFile;10 importde.innosystec.unrar.Archive;11 importde.innosystec.unrar.rarfile.FileHeader;12 /**

13 * zip和rar解压缩工具类14 *@authorlenovo15 *16 */

17 public classZipAndRarTools {18 /**

19 * 解压rar20 *@paramsourceRarPath 需要解压的rar文件全路径21 *@paramdestDirPath 需要解压到的文件目录22 *@throwsException23 */

24 public static void unrar(String sourceRarPath, String destDirPath) throwsException {25 File sourceRar=newFile(sourceRarPath);26   File destDir=newFile(destDirPath);27   Archive archive = null;28   FileOutputStream fos = null;29   System.out.println("Starting 开始解压...");30   try{31     archive = newArchive(sourceRar);32     FileHeader fh =archive.nextFileHeader();33     int count = 0;34     File destFileName = null;35     while (fh != null) {36       System.out.println((++count) + ") " +fh.getFileNameString());37       String compressFileName =fh.getFileNameString().trim();38       destFileName = new File(destDir.getAbsolutePath() + "/" +compressFileName);39       if(fh.isDirectory()) {40         if (!destFileName.exists()) {41 destFileName.mkdirs();42 }43         fh =archive.nextFileHeader();44         continue;45 }46       if (!destFileName.getParentFile().exists()) {47 destFileName.getParentFile().mkdirs();48 }49

50       fos = newFileOutputStream(destFileName);51 archive.extractFile(fh, fos);52 fos.close();53       fos = null;54       fh =archive.nextFileHeader();55 }56

57 archive.close();58       archive = null;59       System.out.println("Finished 解压完成!");60     } catch(Exception e) {61 throwe;62 } finally{63 if (fos != null) {64 try{65 fos.close();66 fos = null;67 } catch(Exception e) {68 }69 }70 if (archive != null) {71 try{72 archive.close();73 archive = null;74 } catch(Exception e) {75 }76 }77 }78 }79

80

81 /**

82 * 解压Zip文件83 *@paramzipFileName 需要解压缩的文件位置84 *@paramdescFileName 将文件解压到某个路径85 *@throwsIOException86 */

87 public static void unZip(String zipFileName,String descFileName) throwsIOException{88 System.out.println("文件解压开始...");89 String descFileNames=descFileName;90 if(!descFileNames.endsWith(File.separator)){91 descFileNames=descFileNames+File.separator;92 }93 try{94 ZipFile zipFile=newZipFile(zipFileName);95 ZipEntry entry=null;96     String entryName=null;97     String descFileDir=null;98     byte[] buf=new byte[4096];99     int readByte=0;100     @SuppressWarnings("rawtypes")101     Enumeration enums=zipFile.getEntries();102     while(enums.hasMoreElements()){103       entry =(ZipEntry) enums.nextElement();104       entryName=entry.getName();105       descFileDir=descFileNames+entryName;106       if(entry.isDirectory()){107        newFile(descFileDir).mkdir();108         continue;109       }else{110         newFile(descFileDir).getParentFile().mkdir();111 }112    File file=newFile(descFileDir);113      OutputStream os=newFileOutputStream(file);114      InputStream is=zipFile.getInputStream(entry);115 while((readByte=is.read(buf))!=-1){116 os.write(buf, 0, readByte);117 }118 os.close();119 is.close();120 }121 zipFile.close();122 System.out.println("文件解压成功!");123 } catch(Exception e) {124 System.out.println("文件解压失败!");125 e.printStackTrace();126 }127

128 }129

130 public static void main(String[] args) throwsException {131 //ZipAndRarTools.unrar(newFile("D:\\存放资料的压缩包\\员工材料.rar"),newFile("D:\\存放资料的非压缩包\\"));

132

133 ZipAndRarTools.unZip("D:\\rarTest\\jar包和配置文件资源.zip", "D:\\rarTest");134 ZipAndRarTools.unrar("D:\\rarTest\\rar压缩包.rar", "D:\\rarTest");135

136 }137 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值