当前位置: 首页 > news >正文

java代码压缩文件_使用Java代码压缩文件或文件夹

/**

文件注释:ReportUtils.java

*

作者:何伟坡

*

时间:2014年4月17日-下午12:06:31

*

类型:文件-ReportUtils.java

*

用途:该文件用于

*

备注:***

*/

package report.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

/**

类型注释:

*

作者:何伟坡

*

时间:2014年4月17日-下午12:06:31

*

类型:ReportUtils

*

用途:该类型用于

*

备注:***

*/

public class ReportUtils {

/**

*

函数注释:zip()

*

作者:何伟坡

*

时间:2014年4月17日-下午2:38:16

*

类型:方法

*

用途:压缩文件或者文件夹

*

备注:***

*/

public static File zip(File srcFile){

File destFile = null;

if(srcFile != null){

destFile = new File(srcFile.getParent()+"\\"+srcFile.getName().split("\\.")[0]+".zip");

if(srcFile.isDirectory()){

zipFolder(srcFile,destFile);

}else{

zipFile(srcFile,destFile);

}

}

return destFile;

}

/**

*

函数注释:zipProcess()

*

作者:何伟坡

*

时间:2014年4月17日-下午2:38:36

*

类型:方法

*

用途:该方法用于压缩文件夹的递归处理

*

备注:***

*/

public static void zipProcess(ZipOutputStream out, File file, String base) throws Exception {

if (file.isDirectory()) {

File[] fl = file.listFiles();

out.putNextEntry(new ZipEntry(base + "/"));

base = base.length() == 0 ? "" : base + "/";

for (int i = 0; i < fl.length; i++) {

zipProcess(out, fl[i], base + fl[i].getName());

}

}else {

out.putNextEntry(new ZipEntry(base));

FileInputStream in = new FileInputStream(file);

int b;

while ( (b = in.read()) != -1) {

out.write(b);

}

in.close();

}

}

/**

*

函数注释:zipFoler()

*

作者:何伟坡

*

时间:2014年4月17日-下午2:06:20

*

类型:方法

*

用途:该方法用于压缩文件夹

*

备注:***

*/

public static void zipFolder(File srcFile, File destFile){

ZipOutputStream out = null;

try {

out = new ZipOutputStream(new FileOutputStream(destFile));

out.setLevel(9);

out.setEncoding("GBK");// 指定编码为gbk,否则部署到linux下会出现乱码

zipProcess(out, srcFile, "");

}catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(out != null){

out.close() ;

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

*

函数注释:zipFile()

*

作者:何伟坡

*

时间:2014年4月17日-下午2:03:41

*

类型:方法

*

用途:该方法用于压缩文件

*

备注:***

*/

public static void zipFile(File srcFile, File destFile){

ZipOutputStream out = null;

FileInputStream in = null;

try {

out = new ZipOutputStream(new FileOutputStream(destFile));

out.setLevel(9);

out.setEncoding("GBK");// 指定编码为gbk,否则部署到linux下会出现乱码

in = new FileInputStream(srcFile);

out.putNextEntry(new ZipEntry(srcFile.getName()));

int length;

byte[] buffer = new byte[1024];

while ((length = in.read(buffer,0,1024)) != -1){

out.write(buffer, 0, length);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(in != null){

in.close();

}

if(out != null){

out.close() ;

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

相关文章:

  • 石子合并 动态规划 java_动态规划:圆形石子合并问题
  • java修饰方法_Java 修饰符
  • arduino timer频率_Arduino利用TimerOne库产生固定频率和占空比的方波
  • flask数据库mysql增删查改_flask_sqlalchemy简单增删查改操作
  • java基础语法的意义_关于java基础语法的学习笔记
  • java中容器试题_Java最常见208道面试题_容器
  • java 开启线程扫描程序_当多个线程在Java中使用System.in上的扫描仪...
  • java中结构体实现_JAVA中如何实现C中的结构体数组的功能?
  • java nio close_wait_Java NIO 操作总结
  • java zmq订阅_java zmq消息队列
  • java按键数据库添加_详解Java MyBatis 插入数据库返回主键
  • java ee jdbc_JavaEE JDBC 补充注意点
  • java 返回前台excel_Java后台读取excel表格返回至Web前端
  • eclipse for java web_【Javaweb】Eclipse for JavaEE新建的Web工程自动生成web.xml
  • gopython 获取python 全局线程锁失败_python线程互斥锁递归锁死锁
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【React系列】如何构建React应用程序
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Apache Pulsar 2.1 重磅发布
  • C++类的相互关联
  • Effective Java 笔记(一)
  • java概述
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • KMP算法及优化
  • Mysql5.6主从复制
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 闭包--闭包之tab栏切换(四)
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 关于Flux,Vuex,Redux的思考
  • 汉诺塔算法
  • 后端_MYSQL
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于webpack 的 vue 多页架构
  • 技术胖1-4季视频复习— (看视频笔记)
  • 日剧·日综资源集合(建议收藏)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 学习使用ExpressJS 4.0中的新Router
  •  一套莫尔斯电报听写、翻译系统
  • 鱼骨图 - 如何绘制?
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (007)XHTML文档之标题——h1~h6
  • (03)光刻——半导体电路的绘制
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C++)八皇后问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm学生管理系统 毕业设计 141543