/* @description:压缩文件操作
* @param filePath 要压缩的文件路径
* @param descDir 压缩文件保存的路径 d:\\aaa.zip
*/
public static void zipFiles(String filePath, String descDir)
{
ZipOutputStream zos = null;
System.out.println("******************ZipOutputStream********************");
try
{
// 创建一个Zip输出流
zos = new ZipOutputStream(new FileOutputStream(descDir));
// 启动压缩
startZip(zos, "", filePath); System.out.println("******************压缩完毕********************");
}
catch (IOException e)
{
// 压缩失败,则删除创建的文件
File zipFile = new File(descDir); if (zipFile.exists())
{
zipFile.delete();
}
System.out.println("******************压缩失败********************"); e.printStackTrace();
}
finally
{
try
{
if (zos != null)
{
zos.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
} /*
*
* @description:对目录中所有文件递归遍历进行压缩
* @param zos ZIP压缩输出流
* @param oppositePath 在zip文件中的相对路径
* @param directory 要压缩的文件的路径
* @throws IOException
*/
private static void startZip(ZipOutputStream zos, String oppositePath,
String directory) throws IOException
{
File file = new File(directory); if (file.isDirectory())
{
// 如果是压缩目录
File[] files = file.listFiles(); for (int i = ; i < files.length; i++)
{
File aFile = files[i]; if (aFile.isDirectory())
{
// 如果是目录,修改相对地址
String newOppositePath = oppositePath + aFile.getName() + "/";
// 压缩目录,这是关键,创建一个目录的条目时,需要在目录名后面加多一个"/"
ZipEntry entry = new ZipEntry(oppositePath + aFile.getName() + "/"); zos.putNextEntry(entry); zos.closeEntry();
// 进行递归调用
startZip(zos, newOppositePath, aFile.getPath());
}
else
{
// 如果不是目录,则进行压缩
zipFile(zos, oppositePath, aFile);
}
}
}
else
{
// 如果是压缩文件,直接调用压缩方法进行压缩
zipFile(zos, oppositePath, file);
}
} /**
*
* @description:压缩单个文件到目录中
* @param zos zip输出流
* @param oppositePath 在zip文件中的相对路径
* @param file 要压缩的的文件
*/
private static void zipFile(ZipOutputStream zos, String oppositePath,File file)
{
// 创建一个Zip条目,每个Zip条目都是必须相对于根路径
InputStream is = null; try
{
ZipEntry entry = new ZipEntry(oppositePath + file.getName());
// 将条目保存到Zip压缩文件当中
zos.putNextEntry(entry);
// 从文件输入流当中读取数据,并将数据写到输出流当中.
is = new FileInputStream(file); int length = ; int bufferSize = ; byte[] buffer = new byte[bufferSize]; while ((length = is.read(buffer, , bufferSize)) >= )
{
zos.write(buffer, , length);
}
zos.closeEntry();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (is != null)
{
is.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}

java压缩的更多相关文章

  1. java压缩指定目录下的所有文件和文件夹的代码

    将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助. String sourceDir="E:\test";int pa ...

  2. java压缩文件或文件夹并导出

    java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...

  3. java压缩流

    java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.

  4. Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)

    本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...

  5. java压缩 GZIP进行简单压缩,ZIP进行多文件保存

    java压缩  GZIP进行简单压缩,ZIP进行多文件保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6 ...

  6. Java压缩技术(二) ZIP压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...

  7. Java压缩和解压缩文件工具

    Java压缩和解压缩文件工具 学习了: https://www.oschina.net/code/snippet_1021818_48130 http://blog.csdn.net/gaowen_h ...

  8. Java 压缩/ 解压 .Z 文件

    1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...

  9. 原生java 压缩解压zip文件

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

  10. Java 压缩字符串

    1.引言 最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串 ...

随机推荐

  1. 10个基础的linux网络和监控命令

    配置zookeeper集群时,需要查看本机ip,输入命令 hostname -i   就会只显示主机ip, 下边搜了一篇常用的    命令,闲的时候多敲敲命令,以便用的时候再找! 我下面列出来的10个 ...

  2. C语言中的EOF和回车不一样

    经常我们碰到这样一个C语言问题,例如: 输入一个组整数,按照从小到大排序后输出结果 输入:  1 7 9 2 4 输出:  1 2 4 7 9 这里要用C语言读入一段数的话,如果用 int array ...

  3. dubbo框架----初探索-配置

    使用框架版本 dubbo-2.5.3 spring-4.2.1.RELEASE jdk-1.8 tomcat-8.0 zookeeper-3.3.6 Dubbo与Zookeeper.SpringMVC ...

  4. log4net--不可多得的开源日志记录组件

    log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...

  5. linux下查找包含BOM头的文件和清除BOM头命令

    查找包含BOM头的文件,命令如下:   grep -r -I -l $'^\xEF\xBB\xBF' ./   这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出.   但 ...

  6. 【CISP笔记】安全攻击与防护

    公开信息收集-搜索引擎 快速定位Google 搜索“5sf67.jsp”可以找到存在此脚本的Web网站Google 搜索“teweb/default.htm”就可找到开放着远程Web连接的服务器信息挖 ...

  7. 如何催促Apple进行App审核

    为什么提交给 App Store 的应用进入"审核(In Review)"状态后, 仍然可能会等待好多天的时间 ? 不过你也可以通过催促Apple进行App审核来缩短这个时间.以下 ...

  8. 浅谈checkpoint与内存缓存

    事务日志存在检查点checkpoint,把内存中脏数据库写入磁盘,以减少故障恢复的时间,在此之前有必要提下SQL Server内存到底存放了哪些数据? SQL Server内存使用 对SQL Serv ...

  9. poj.1703.Find them, Catch them(并查集)

    Find them, Catch them Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...

  10. Python-Matplotlib安装及简单使用

    在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示. Matplotlib是一个Python的图形框架,类似于MATLAB和R语言. Matplotlib的 ...