java 解压zip、rar文件
来源:互联网 发布:淘宝购物卡哪里买 编辑:程序博客网 时间:2024/05/17 23:51
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.charset.Charset;import java.util.Enumeration;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;import com.github.junrar.Archive;import com.github.junrar.rarfile.FileHeader;/** * * @ClassName: FileCompress * @Description: TODO(这里用一句话描述这个类的作用) * @author 周玉波 * @date 2017年4月11日 上午9:30:11 * */@SuppressWarnings("rawtypes")public final class FileCompress{/** * zip解压缩 * * @param zipfile * File 需要解压缩的文件 * @param descDir * String 解压后的目标目录 */ public static String unZipFiles(java.io.File zipfile, String descDir) { InputStream in =null; OutputStream out =null; ZipFile zf=null; File file=null; String zipEntryName=""; try { descDir=descDir.replaceAll("\\/", "\\\\").replaceAll("\\.zip", ""); //jdk1.8没有参数Charset,适用于1.7 zf = new ZipFile(zipfile,Charset.forName("GBK")); for (Enumeration entries = zf.entries(); entries .hasMoreElements();) { ZipEntry entry = ((ZipEntry) entries.nextElement()); zipEntryName = entry.getName(); boolean ismkdir = false; if(zipEntryName.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹 ismkdir = true; } zipEntryName = descDir+"\\" + zipEntryName; if(entry.isDirectory()){ //如果是文件夹先创建 file = new File(zipEntryName); file.mkdirs(); continue; } file = new File(zipEntryName); if(!file.exists()){ //如果是目录先创建 if(ismkdir){ new File(zipEntryName.substring(0, zipEntryName.lastIndexOf("/"))).mkdirs(); //目录先创建 } } //file.createNewFile(); //创建文件 in = zf.getInputStream(entry); File dstDiretory = new File(descDir); if (!dstDiretory.exists()) {// 目标目录不存在时,创建该文件夹 dstDiretory.mkdirs(); } out = new FileOutputStream(zipEntryName); byte[] buf1 = new byte[1024]; int len; while ((len = in.read(buf1)) > 0) { out.write(buf1, 0, len); } System.out.println("解压缩完成."); } return zipEntryName.replaceAll("/", "\\\\"); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(out!=null){out.close();out=null; } if(in!=null){in.close();in=null; } if(zf!=null){ zf.close(); zf=null; } } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} System.gc(); }return null; } /** * 根据原始rar路径,解压到指定文件夹下. * @param srcRarPath 原始rar路径 * @param dstDirectoryPath 解压到的文件夹 */ public static String unRarFile(String srcRarPath, String dstDirectoryPath) { dstDirectoryPath=dstDirectoryPath.replaceAll("\\/", "\\\\").replaceAll("\\.rar", ""); //dstDirectoryPath=dstDirectoryPath.substring(0,dstDirectoryPath.lastIndexOf("\\")); if (!srcRarPath.toLowerCase().endsWith(".rar")) { System.out.println("非rar文件!"); return ""; } File dstDiretory = new File(dstDirectoryPath); if (!dstDiretory.exists()) {// 目标目录不存在时,创建该文件夹 dstDiretory.mkdirs(); } Archive a = null; FileOutputStream os=null; try { a = new Archive(new File(srcRarPath)); if (a != null) { a.getMainHeader().print(); // 打印文件信息. FileHeader fh = a.nextFileHeader(); while (fh != null) { if (fh.isDirectory()) { // 文件夹 File fol = new File(dstDirectoryPath + File.separator + fh.getFileNameString()); fol.mkdirs(); } else { // 文件 File out = new File(dstDirectoryPath + File.separator + fh.getFileNameString().trim()); //System.out.println(out.getAbsolutePath()); try {// 之所以这么写try,是因为万一这里面有了异常,不影响继续解压. if (!out.exists()) { if (!out.getParentFile().exists()) {// 相对路径可能多级,可能需要创建父目录. out.getParentFile().mkdirs(); } out.createNewFile(); } os = new FileOutputStream(out); a.extractFile(fh, os); } catch (Exception ex) { ex.printStackTrace(); }finally{ if(os!=null){ os.close(); os=null; } } } fh = a.nextFileHeader(); } } return dstDirectoryPath; } catch (Exception e) { e.printStackTrace(); }finally{ if(a!=null){ try {a.close();a=null;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } } return ""; }}RAR的解压需要导入包junrar-0.7.jar
1 0
- Java解压ZIP、RAR文件
- java 解压zip、rar文件
- JAVA 解压ZIP RAR文件
- 解压zip rar文件
- Java解压zip和rar文件
- Java 解压zip和rar文件
- java解压zip、rar(多级文件)
- java解压rar.zip
- java解压zip与rar
- java解压rar以及zip
- Java 解压rar 解压缩zip
- java之解压zip,rar
- java调用winrar解压文件[rar.bz2.zip.....]
- java 文件解压(zip或rar)源代码
- java解压rar文件
- java解压rar文件
- java.util.zip包无法正常解压rar软件压缩的rar文件
- ubuntu下解压.zip和.rar文件
- linux_grep
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- JBoss修改端口号
- 有用的代码块
- Mysql_InnoDB Vs MyISAM
- java 解压zip、rar文件
- linux+jenkins+maven+git+tomat(多个节点)环境搭建
- Qt5 C++源码中使用中文的简单步骤
- 微擎中 memcache的使用
- vim_使用查找命令查找指定字符串
- 开发中常用的设计模式
- JBoss多JDK下启动JBoss
- linux_Git_command
- java里类方法和实例方法区别