本文主要讲一讲如何在java中实现对zip和rar文件的解压。
本文的相关的源码:源码下载
一、解压rar文件。
由于WinRAR 是共享软件,并不是开源的,所以解压rar文件的前提是系统已经安装了winrar,比如本人的安装路径是:
C:\\Program Files\\WinRAR\\winrar.exe
然后运用java.lang.Process 的相关知识来运行系统命令行来实现解压的。
winrar 命令行相关参数自己可以搜索下的网上资料很多
具体代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/** * 解压rar文件(需要系统安装Winrar 软件) * @author Michael sun */ public class UnRarFile { /** * 解压rar文件 * * @param targetPath * @param absolutePath */ public void unRarFile(String targetPath, String absolutePath) { try { // 系统安装winrar的路径 String cmd = "C:\\Program Files\\WinRAR\\winrar.exe"; String unrarCmd = cmd + " x -r -p- -o+ " + absolutePath + " " + targetPath; Runtime rt = Runtime.getRuntime(); Process pre = rt.exec(unrarCmd); InputStreamReader isr = new InputStreamReader(pre.getInputStream()); BufferedReader bf = new BufferedReader(isr); String line = null; while ((line = bf.readLine()) != null) { line = line.trim(); if ("".equals(line)) { continue; } System.out.println(line); } bf.close(); } catch (Exception e) { System.out.println("解压发生异常"); } } /** * @param args */ public static void main(String[] args) { String targetPath = "D:\\test\\unrar\\"; String rarFilePath = "D:\\test\\test.rar"; UnRarFile unrar = new UnRarFile(); unrar.unRarFile(targetPath, rarFilePath); } } |
二、解压zip文件
由于zip是开源的,所以在jdk里提供了相应的类对zip文件的实现:
java.util.zip.*,详细情况可以参考java API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/** * 解压zip文件 * @author Michael sun */ public class UnzipFile { /** * 解压zip文件 * * @param targetPath * @param zipFilePath */ public void unzipFile(String targetPath, String zipFilePath) { try { File zipFile = new File(zipFilePath); InputStream is = new FileInputStream(zipFile); ZipInputStream zis = new ZipInputStream(is); ZipEntry entry = null; System.out.println("开始解压:" + zipFile.getName() + "..."); while ((entry = zis.getNextEntry()) != null) { String zipPath = entry.getName(); try { if (entry.isDirectory()) { File zipFolder = new File(targetPath + File.separator + zipPath); if (!zipFolder.exists()) { zipFolder.mkdirs(); } } else { File file = new File(targetPath + File.separator + zipPath); if (!file.exists()) { File pathDir = file.getParentFile(); pathDir.mkdirs(); file.createNewFile(); } FileOutputStream fos = new FileOutputStream(file); int bread; while ((bread = zis.read()) != -1) { fos.write(bread); } fos.close(); } System.out.println("成功解压:" + zipPath); } catch (Exception e) { System.out.println("解压" + zipPath + "失败"); continue; } } zis.close(); is.close(); System.out.println("解压结束"); } catch (Exception e) { e.printStackTrace(); } /** * @param args */ public static void main(String[] args) { String targetPath = "D:\\test\\unzip"; String zipFile = "D:\\test\\test.zip"; UnzipFile unzip = new UnzipFile(); unzip.unzipFile(targetPath, zipFile); } } |
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
0 条评论。