实现Java代码压缩解压
原因:某个时间想对服务器上的zip中的某些文件进行修改
本来以为很简单的事情,在网上找了好些代码,结果效果都不是很理想。
实现对象:对各种类型的文件夹(包含子文件或子文件夹)
下面介绍一下自己综合网上代码自己写的
首先要倒入一个jar包:(零积分下载)
package com.tzx.test2;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException; import org.apache.tools.zip.ZipOutputStream; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration; import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile; /*** 压缩解压zip文件* @author STVEN_KING* @date: 2015年4月1日 下午4:09:11* */
public class ZipUtil { /*** 压缩文件夹* @param filesDirth 目标文件 E:/a/b* @param zipFilePath 存放压缩文件的路径名 E:/a/b.zip* @param deleteFile 是否删除文件夹及目录* @return boolean 是否压缩成功* */public static boolean doZip(String filesDirPath, String zipFilePath,boolean deleteFile) { return doZip(new File(filesDirPath), zipFilePath,deleteFile); } private static boolean doZip(File inputFile, String zipFileName,boolean deleteFile) { ZipOutputStream out = null; try { out = new ZipOutputStream(new FileOutputStream(zipFileName)); boolean result = doZip(out, inputFile, "");return result; } catch (FileNotFoundException ex) { ex.printStackTrace(); return false; } catch (IOException ex) { ex.printStackTrace(); return false; } finally { try { out.close(); if (deleteFile) {deleteDir(inputFile);}} catch (IOException ex) { ex.printStackTrace(); return false; } } } private static boolean doZip(ZipOutputStream out, File f, String base) { try { if (f.isDirectory()) { File[] fl = f.listFiles(); if (fl.length == 0) {out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));}for (int i = 0; i < fl.length; i++) { doZip(out, fl[i], base + "/" + fl[i].getName()); } } else { out.putNextEntry(new org.apache.tools.zip.ZipEntry(base)); FileInputStream in = new FileInputStream(f); int b; while ((b = in.read()) != -1) { out.write(b); } in.close(); } return true; } catch (IOException ex) { ex.printStackTrace(); return false; } } /*** 解压zip文件* @param zipFilePath 压缩文件路径名 E:/b/a.zip* @param base 解压文件存放路径 E:/b/c* @param deleteFile 是否删除压缩包* @return boolean 是否解压成功* */public static boolean unZip(String zipFilePath, String base, boolean deleteFile) { try { File file = new File(zipFilePath); if (!file.exists()) { throw new RuntimeException("解压文件不存在!"); } ZipFile zipFile = new ZipFile(file); Enumeration e = zipFile.getEntries(); while (e.hasMoreElements()) { ZipEntry zipEntry = (ZipEntry) e.nextElement(); if (zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File f = new File(base+ "/" + name); f.mkdirs(); } else { File f = new File(base + zipEntry.getName()); f.getParentFile().mkdirs(); f.createNewFile(); InputStream is = zipFile.getInputStream(zipEntry); FileOutputStream fos = new FileOutputStream(f); int length = 0; byte[] b = new byte[1024]; while ((length = is.read(b, 0, 1024)) != -1) { fos.write(b, 0, length); } is.close(); fos.close(); } } if (zipFile != null) { zipFile.close(); } if (deleteFile) { file.deleteOnExit();} return true; } catch (IOException ex) { return false; } }/*** 递归删除目录下的所有文件及子目录下所有文件* @param dir 将要删除的文件目录* @return boolean */private static boolean deleteDir(File dir) {if (dir.isDirectory()) {String[] children = dir.list();//递归删除目录中的子目录下for (int i=0; i<children.length; i++) {boolean success = deleteDir(new File(dir, children[i]));if (!success) {return false;}}}// 目录此时为空,可以删除return dir.delete();}
}
实现Java代码压缩解压相关推荐
- java代码实现解压文件_Java压缩/解压文件的实现代码
用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...
- Java代码实现解压文件包和压缩文件的工具类
最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...
- Java 字符串压缩/解压【开发记录】
1.场景:由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数 ...
- java 文件压缩 解压_Java文件压缩与解压缩(一)
package com.cn; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream ...
- java gzip 压缩解压工具类
因为觉得简单,本想抱着百度直接拿过来用的心态,结果发现网上的代码都转载自同一份,且埋了一个坑,你不仔细去梳理,很难发现. mark下需要注意的两点: 1. 编码/解码,压缩/解压缩是成对出现的 编码: ...
- java zip压缩解压_JAVA实现实用的ZIP压缩与解压
程序实现了ZIP压缩.共分为2部分 : 压缩(compression)与解压(decompression) 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压. ...
- java如何压缩解压图片_Java实现压缩文件与解压缩文件
由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...
- Java 字符串 压缩 解压
实现字符串的压缩和解压功能 需要导入的jar import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; im ...
- 通过C#代码 压缩/解压文件
通过引用一DLL(ICSharpCode.dll)可以实现所述功能... 一.压缩文件 using System; using ICSharpCode.SharpZipLib; using ICSha ...
最新文章
- 打开逗游服务器显示无法连接,轮回诀无法连接服务器 进不去解决方法
- GhostNet : 轻量级网络模型,性能超越MobileNetV3(CVRP2020, 华为诺亚)
- EST:李芳柏团队揭示微生物介导的砷氧化耦合硝酸还原
- IBM人工智能将“掌舵”全球首个跨大西洋自主驾驶船舶
- dede修改mysql,Dedecms(织梦)程序MySQL修复表和文章路径修改方法
- Apache Spark技术实战之6 -- spark-submit常见问题及其解决
- php 视图层smarty,4. 视图引擎 View Engine - Smarty
- 关于方程a^x=1(mod m)的最小x解
- python安装地是什么_如何安装python
- IndentationError: expected an indented block --python报错 or IndentationError:unexpected indent
- 头歌(educoder)实训作业题目及答案分享 ——1-1 Java入门 - Java入门基础
- c51单片机小车c语言,用51单片机编写的智能小车全程前进的C程序
- 7-15 新浪微博热门话题
- 利用Java模拟石头剪刀布游戏
- SQL语句group by 的求和sum
- 百词斩秋招java,成都百词斩2018web前端秋招笔试题
- [审核]审核被拒(陌生社交应用)
- 单细胞分析:质控实操(五)
- Kubernetes之健康检查与服务依赖处理
- 详细讲解go web框架之gin框架源码解析记录及思路流程和理解