在 Java 中解压 zip 文件
2015-08-26 18:18
459 查看
/** 解压 zip 文件。 * @param zipFilePath zip 文件路径 * @param unzipDirPath 解压目录 * */ public static void unZip(String zipFilePath, String unzipDirPath) { int buffer = 2048; int count = -1; File dir = new File(unzipDirPath); if (!dir.exists()) { dir.mkdirs(); } if (!unzipDirPath.endsWith("/")) { unzipDirPath += "/"; } try { // java.io.FileInputStream FileInputStream fis = new FileInputStream(zipFilePath); // java.util.zip.ZipInputStream ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis)); // java.util.zip.ZipEntry ZipEntry entry = null; while ((entry = zis.getNextEntry()) != null) { byte data[] = new byte[buffer]; String entryName = entry.getName().replace("\\", "/"); // 文件名以 / 结尾,这是一个目录,创建目录后直接跳过 if (entryName.endsWith("/")) { new File(unzipDirPath + entryName).mkdirs(); continue; } // 文件名中包含目录,则先创建该目录 if (entryName.contains("/")) { String _path = unzipDirPath + entryName.substring(0, entryName.lastIndexOf("/") + 1); File _dir = new File(_path); if (!dir.exists()) { _dir.mkdirs(); } } String path = unzipDirPath + entryName; File file = new File(path); file.createNewFile(); // java.io.FileOutputStream FileOutputStream fos = new FileOutputStream(file); // java.io.BufferedOutputStream BufferedOutputStream bos = new BufferedOutputStream(fos, buffer); while((count = zis.read(data, 0, buffer)) != -1) { bos.write(data, 0, count); } bos.flush(); bos.close(); } zis.close(); } catch (Exception e) { e.printStackTrace(); } }
相关文章推荐
- java - 日期相减、四舍五入
- 前端传递参数,由于控制器层类实现了struts2的ModelDriven而产生的一个异常
- SpringMVC注解
- struts2之ModelDriven的用法
- myeclipse 编辑器美化
- Java中byte与(16进制)字符串的互相转换
- java虚拟机内存溢出,eclipse配置
- Java中关于三目运算符理解和简单应用.
- Java多线程互斥访问变量
- Spring加载properties配置资源文件的应用
- java 将图片白色部分透明
- 将java源码打成jar包
- Eclipse Java EE IDE使用方法
- java综合(四)spring与hibernate整合
- java校验导入的模板
- java日期与字符串相互转换
- Spring-bean作用域scope详解
- Dream------Java--ant zip 对压缩文件进行指定位置的修改
- Java多线程 -- 生产者消费者模型
- Java IO 目录